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

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

我正在尝试完成一项作业(因此指出大体方向将有很大帮助),我必须在其中(按顺序):

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

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 java.lang.ArrayIndexOutOfBoundsException:2 在 doublearray.main(doublearray.java:15)

现在,我知道“,Tom,Coke”仅分配给ONE [0],这就是出现 null 的原因,但我不知道如何补救或使其成功打印。

任何帮助将不胜感激,我已经坚持了大约一个小时。 谢谢你。

java arrays matrix
11个回答
11
投票

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

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

4
投票

你可能想要这样的东西:

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

您会知道首选项[0]是关于汤姆的
你会知道 Preferences[1] 是关于 John

一旦你有了它,列将是 [0]=>"name" [1] =>"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
投票
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]);}
    }
     }  

1
投票

在第二个循环中

j
也应该
j<2
而不是
j<3


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

需要

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

您没有使数组足够大,无法使

j
成为
== 2
,所以它是
out of bounds


1
投票

简单

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

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

1
投票

您已将 2D 数组定义为:

new String [2][2];

并且您的循环似乎正在尝试获取诸如

之类的元素

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

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

导致数组索引越界。您可能需要将内部 for 循环更改为

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

并尝试。


0
投票

看看你的第二个 for 循环。假设每个最终维度只有 2 个值的空间


0
投票

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

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


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

输出:

[汤姆,可乐,空]

[空,约翰,百事可乐]


0
投票

试试这个。

for(int i = 0; i < Preferences.length; i++) {
        for(int j = 0; j < Preferences[i].length; j++) {
            System.out.println(Preferences[i][j]);
        }
    }
© www.soinside.com 2019 - 2024. All rights reserved.