在Java中使用for循环打印和二维数组

时间:2013-08-01 14:49:59

标签: java arrays matrix

我正在努力完成一项任务(因此,总体方向上的要点会有很大帮助)我必须(按顺序):

  1. 声明一个二维字符串数组,
  2. 将值分配给两个人和他们最喜欢的饮料的数组
  3. 使用for循环输出

  4. public class doublearray {
        public static void main(String[] args){
            String Preferences [] [] = new String [2][2];
            Preferences [0][0]= "Tom, Coke";
            Preferences [1][1]= "John, Pepsi";
    
            for (int i=0; i<2; i++){
                for (int j =0; j<3; j++){
                    System.out.print(Preferences[i][j]);
                }
            }
        }   
    }
    

    我收到此错误消息

      

    Tom,CokenullException in thread“main”java.lang.ArrayIndexOutOfBoundsException:2       在doublearray.main(doublearray.java:15)

    现在,我明白“汤姆,可乐”只被分配到 ONE [0],这就是出现null的原因,但我不知道如何补救或打印它成功。

    任何帮助都会非常感激,我已经坚持了大约一个小时。 谢谢你们。

10 个答案:

答案 0 :(得分:10)

试试这个,这是遍历任意大小的二维数组的正确方法:

for (int i = 0; i < Preferences.length; i++) {
    for (int j = 0; j < Preferences[i].length; j++) {
        System.out.print(Preferences[i][j]);
    }
}

答案 1 :(得分:3)

你可能想要这样的东西:

Preferences [0][0]="Tom";
Preferences [0][1]="Coke";
Preferences [1][0]="John";
Preferences [1][1]="Pepsi";
  

你会知道偏好[0]是关于汤姆的   你会知道偏好[1]是关于约翰的

一旦你拥有它,列将是[0] =&gt;“name”[1] =&gt;“drink”

[0][1] will give you Tom[0] s drink[1] [Coke] for example.  
[0][0] will give you Tom[0] s name[0] [Tom] for example.
[1][1] will give you John[1] s drink[1] [Pepsi] for example.  
[1][0] will give you John[1] s name[0] [John] for example.

答案 2 :(得分:1)

for (int i=0; i<2; i++){
  //size for inner loop was 3 but should be 2      
  for (int j =0; j<2; j++){

    System.out.print(Preferences[i][j]);}
}
 }  

任意大小

for (int i=0; i<Preferences.length; i++){
      for (int j =0; j<Preferences[i].length; j++){

        System.out.print(Preferences[i][j]);}
    }
     }  

答案 3 :(得分:1)

在第二个循环中j也应该j<2而不是j<3

答案 4 :(得分:1)

for (int j =0; j<3; j++){

需要

for (int j =0; j<2; j++){

您没有让数组足够大,j== 2所以它是out of bounds

答案 5 :(得分:1)

简单

 for (int i=0; i<2; i++){
        for (int j =0; j<2; j++){

    System.out.print(Preferences[i][j]);}
}

答案 6 :(得分:1)

您已将2D数组定义为:

new String [2][2];

并且你的循环似乎需要获取诸如

之类的元素

new String [0][3];等等因为你的内循环:

    for (int j =0; j<3; j++)

导致数组索引超出范围。您可能需要将内部for循环更改为

    for (int j =0; j<2; j++)

然后试试。

答案 7 :(得分:0)

看看你的第二个for-loop。考虑到每个最终维度只有2个值的空间

答案 8 :(得分:0)

如果你的数组长度为2并从0开始循环,你如何将j从0变为2。

for(int j = 0; j <3; j ++)更改为 for(int j = 0; j&lt; 2; j ++)

答案 9 :(得分:0)

    for (String[] row : Preferences) {
        System.out.println (Arrays.toString(row) );
    }

输出:

[汤姆,可乐,空]

[null,约翰,百事可乐]