繁体   English   中英

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

[英]How to write a code that prints odd-even numbers using for-each loop on an array in java

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

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

即使在编译器中打印了一些答案,它也不是应该的。 如:output 会是这样的:

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 循环从数组中打印奇数和偶数,但不幸的是它显示

“线程“主”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 循环语法

Java for-each 循环的语法是:

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

这里,

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM