【问题标题】:How to write a code that prints odd-even numbers using for-each loop on an array in java如何编写代码,在java中的数组上使用for-each循环打印奇偶数
【发布时间】:2021-03-11 16:39:29
【问题描述】:

我编写了一个代码,该代码应该使用 Java 中的 for-each 循环从数组中打印奇数和偶数,但不幸的是它显示了

"Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 22"

即使编译器中打印了一些答案,也不是应有的样子。 如:输出会是这样的:

Even numbers in the Array are:
10
6
4
2
.
.

但它显示如下:

Even numbers in the Array are:
10
14
4
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 22

有人可以帮忙吗?

这是我的代码供您参考。

public class Main {
    public static void main(String[] args) {
        int[] num = {1,3,9,10,6,5,4,2,22,14,15,7,8};

        System.out.println("Even numbers in the Array are:");
        for (int i : num) {
            if (num[i] % 2 == 0) {
                System.out.println(num[i]);
            }
        }

        System.out.println("The Odd numbers in the Array are:");
        for (int i : num) {
            if (num[i] % 2 != 0) {
                System.out.println(num[i]);
            }
        }
    }
}

【问题讨论】:

    标签: java arrays foreach


    【解决方案1】:

    我写了一个代码,应该打印奇数和偶数 在 Java 中使用 for-each 循环从数组中提取,但不幸的是它显示了

    “线程“主”java.lang.ArrayIndexOutOfBoundsException 中的异常: 22 英寸。

    那是因为您将数组的元素用作数组的索引本身。它在 22 处失败,因为它是数组中第一个大于数组大小的值。

    你有基于索引的循环

    for(int i=0; i<num.length; i++){
        if( num[i]%2 ==0) {
            System.out.println(num[i]);
        }
    }
    

    并且您(除其他外)增强了 for 循环,它允许您直接迭代(例如)数组的内容,而无需显式指定索引。

    for-each 循环语法

    The syntax of the Java for-each loop is:

    for(dataType item : array) {
        ...
    }
    

    这里,

    array - 数组或集合
    item - 数组/集合的每一项都分配给这个变量 dataType
    数据类型 - 数组/集合数组/集合

    这使得代码更简洁,也更不容易出错:

    for(int n : num) {
        if(n%2 == 0) {
            System.out.println(n);
        }
    }
    

    这个循环非常有用,因为很多时候除了访问数组中的元素之外,人们想要遍历数组的所有元素而不真正关心索引。

    【讨论】:

      【解决方案2】:
      for(int i : num) 
      

      这里的“i”不是数组的索引,这正是元素, 所以你不需要以这种方式获取值

      num[i]
      

      这样引用就够了

      i
      

      所以在这种情况下最好不要使用变量名“i”,但是

      for (number: numbers) 
      

      例如

      【讨论】:

        猜你喜欢
        • 2011-05-12
        • 1970-01-01
        • 2014-03-30
        • 2012-04-06
        • 1970-01-01
        • 2019-04-30
        • 1970-01-01
        • 2013-02-20
        相关资源
        最近更新 更多