尝试使用 for 循环打印二维数组中的所有值时出现异常。也需要帮助理解 Nested for 循环

问题描述 投票:0回答:1

我目前正在学习开始学习Java,使用BroCode for Uni,学习如何使用For循环打印二维数组中的所有值。该代码在线程中出现异常:Index 3 is out of bounds for length 3 at Arrays2D.main.

我也不确定嵌套的 for 循环到底在说什么,有人能告诉我吗?

{
    //2D Arrays = an array in an array

    String[][] cars = {
            {"Toyota", "Mazda", "Subaru"},
            {"Ferrari", "Mercedes", "Porsche"},
            {"Tesla", "Ford", "Hyundai"}
    };
    //[how many arrays][how many elements in each array]
    
    for(int i = 0; i < cars.length; i++)
    {
        System.out.println();
        for(int j = 0; j < cars[i].length; i++)
        {
            System.out.println(cars[i][j] + ", ");
        }
    }
}

从视频中复制代码,不知道哪里错了?几乎只是期望它能在汽车上打印所有值。

java arrays for-loop nested nested-loops
1个回答
0
投票

在内部 for 循环中,您正在递增

i
变量而不是
j
,这导致
IndexOutOfBoundsException
因为
i
变得比它应该的大。

内部 for 循环应该使用变量

i-th
遍历
cars[i]
数组(即
j
)中的每个元素。因此,例如,当
i
0
时,内部 for 循环应按顺序遍历第一个子数组的元素“Toyota”、“Mazda”和“Subaru”。

尝试以下操作:

{
    //2D Arrays = an array in an array

    String[][] cars = {
            {"Toyota", "Mazda", "Subaru"},
            {"Ferrari", "Mercedes", "Porsche"},
            {"Tesla", "Ford", "Hyundai"}
    };
    //[how many arrays][how many elements in each array]
    
    for(int i = 0; i < cars.length; i++)
    {
        System.out.println();
        for(int j = 0; j < cars[i].length; j++)
        {
            System.out.println(cars[i][j] + ", ");
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.