java - For-Each 循环 Java 错误 ArrayIndexOutOfBoundsException

标签 java arrays for-loop foreach

在我的程序中,我需要一个 for-each 循环,它计算给定数组中的偶数并递增变量 even。为每一个。当我使用标准 for循环,即 (i = 0; i < numbers.length; i++;) ,然后代码工作正常。但是,我的作业要求我对这个特定问题使用 for-each 循环。我做错了什么吗?

int [] numbers = new int[8];
int even = 0;
int odd = 0;

for (int i = 0; i < numbers.length; i++) { 
    numbers[i] = (int)(Math.random() * 51 + 50);
}

for (int i : numbers) {
    if (numbers[i] % 2 == 0) {
        even++;
    }
    else
        odd++;

这会引发错误:

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

最佳答案

if (numbers[i] % 2 == 0) {

在您的 foreach 循环中,您不需要使用索引访问它。只需 i 就足够了,因为 foreach 继续为您提供您正在使用的数组/集合中的 元素 直接(不是索引)。

if (i % 2 == 0) {

for (int i : numbers) {
        if (i % 2 == 0) {
            even++;
        }
        else{
            odd++;
        }
  }

实际上,您可以通过检查第一个循环本身中的偶数或奇数来完全消除第二个循环,从而缩短您的代码。

关于java - For-Each 循环 Java 错误 ArrayIndexOutOfBoundsException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48686833/

相关文章:

php - JSON 中的奇怪字符(在 cURL 身份验证后获得)

c++ - 一个单独的循环减慢了一个独立的早期循环?

javascript - 使用 for 循环增量打印数组项

java - JTextArea 中的具体字数统计

java - cerr (c++) 怎么会出现在 Stdout (Java) 中?

java - 根据子对象条件在数组数组中查找对象

javascript - 如何使 HTML 表格使用 PHP 数组

c - 素数平均程序

java - 由 : java. lang.NullPointerException 引起:lock == null

java - 如何获取 Bing Ads API 的开发人员 key