java - 如何编写使用for-each循环在java中的数组上打印奇偶数的代码

问题描述

我编写了一个代码,应该使用 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]);
            }
        }
    }
}

解决方法

for(int i : num) 

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

num[i]

这样引用就够了

i

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

for (number: numbers) 

例如代替

,

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

“线程“main”中的异常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);
    }
}

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