【问题标题】:create an array of twenty integers and fill the array with even numbers创建一个包含 20 个整数的数组并用偶数填充数组
【发布时间】:2016-05-05 11:57:32
【问题描述】:

我正在尝试创建一个打印前 20 个偶数的数组,但我不知道如何让数组打印它们,我只得到一个包含 20 个 0 的数组。到目前为止,这就是我所拥有的写的。

int[] mylist = new int[20];
int even = 0;   

while ((even%2 == 0) && (even < 20)){
    even++;
}

System.out.println("Element at index 0: " + mylist[0]);
System.out.println("Element at index 1: " + mylist[1]);
System.out.println("Element at index 2: " + mylist[2]);
System.out.println("Element at index 3: " + mylist[3]);
...

编辑:这是我到目前为止所做的:

    int[] mylist=new int[20];//establishes the name and length of an array

    for (int even=0;even<mylist.length;even++)

    {
    mylist[even]=even;

        if(even%2==0)
     System.out.println("Even Element: "+even);
}

但是,不是打印出 20 个偶数,而是打印出 1 到 20 之间的偶数。

【问题讨论】:

  • 那是因为你没有在 mylist 中放任何东西
  • 您认为哪一行代码将数字放入数组中?
  • 即使你在while循环中分配了一个元素,它也只会运行一次。

标签: java arrays loops for-loop while-loop


【解决方案1】:

创建一个包含 20 个整数的数组并用偶数填充数组

  1. 创建一个包含 20 个 int 元素的数组:

    int[] evenNumbers = new int[20];
    
  2. 用偶数填充数组:

    for (int i = 0; i < evenNumbers.length; i++) {
       evenNumbers[i] = i*2;
    }
    
  3. 打印数组的元素

    for (int i = 0; i < evenNumbers.length; i++) {
        System.out.println("Element at index " + i + ": " + evenNumbers[i]);
    }
    

【讨论】:

    【解决方案2】:

    您正在声明数组,但没有将任何值传递给该数组,并且“偶数”变量会递增,但在代码中该值位于“mylist”数组中的位置

    这里是代码:

    int[] myList = new int[20];  
        //adding the elements into the Array
        for(int i=0 ;i<myList.length;i++){   
            myList[i] =i;
        }
        for(int j: myList){
          if(j%2==0){      // checking for even 
             System.out.println("even elements:" +j);
         }
    

    【讨论】:

      【解决方案3】:

      您的 while 循环不会将任何值设置为 mylist。使用 java 流,您可以这样做:

      int[] result = IntStream.iterate(0, i->i+2).limit(20).toArray();
      for (int i : result)
         System.out.println(i);
      
      0
      2
      4
      6
      8
      10
      12
      14
      ...
      

      https://ideone.com/HZbGk7

      【讨论】:

        【解决方案4】:

        就像提到的 marcinj 一样,您可以使用 InteStream 并对其应用谓词并根据需要定义谓词:

        public static void main(String[] args) {
        IntPredicate isEven = i -> i%2 == 0;
        
        int[] result = IntStream.iterate(0, i -> i+1)
                                .filter(isEven)
                                .limit(20)
                                .toArray();
        for (int i : result)
           System.out.println(i);
        }
        

        在这个例子中,我创建了一个 intpredicate 来定义您的流的哪些值将在这种情况下仅使用偶数值:i%2 == 0。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2022-09-27
          • 2012-06-14
          • 1970-01-01
          • 2017-09-18
          • 1970-01-01
          • 2011-08-06
          • 2017-04-21
          相关资源
          最近更新 更多