在 Java 中使用 for 循环打印和二维数组
Posted
技术标签:
【中文标题】在 Java 中使用 for 循环打印和二维数组【英文标题】:Using a for loop to Print and Two-Dimensional Array in Java 【发布时间】:2013-08-02 13:42:29 【问题描述】:我正在尝试完成一项任务(因此指向大方向会有很大帮助),我必须(按顺序):
-
声明一个二维字符串数组,
为两个人和他们最喜欢的饮料的数组分配值
使用 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,线程“main”中的 CokenullException java.lang.ArrayIndexOutOfBoundsException:2 在 doublearray.main(doublearray.java:15)
现在,我知道 ",Tom,Coke" 只分配给 ONE [0] 这就是为什么会出现 null 的原因,但我不知道如何解决这个问题或让它打印出来成功。
任何帮助将不胜感激,我已经坚持了大约一个小时。 谢谢你。
【问题讨论】:
内部循环将允许 j 为 2,这超出了内部数组的范围。换句话说,Preferences[0][2] 超出了数组的范围,因为长度为 2。内循环应该是 j 答案开始了...... 为什么是i < 2
和j < 3
?
非常感谢你们,我之前已将其从 >2 更改为 >3,以试图摆脱打印的“nullnull”。干杯! :)
【参考方案1】:
试试这个,这是遍历任意大小的二维数组的正确方法:
for (int i = 0; i < Preferences.length; i++)
for (int j = 0; j < Preferences[i].length; j++)
System.out.print(Preferences[i][j]);
【讨论】:
【参考方案2】:你可能想要这样的东西:
Preferences [0][0]="Tom";
Preferences [0][1]="Coke";
Preferences [1][0]="John";
Preferences [1][1]="Pepsi";
您会知道 Preferences[0] 是关于 Tom 你会知道 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.
【讨论】:
【参考方案3】: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]);
【讨论】:
【参考方案4】:在第二个循环中j
也应该是j<2
而不是j<3
【讨论】:
【参考方案5】:for (int j =0; j<3; j++)
需要
for (int j =0; j<2; j++)
您没有使数组足够大以使j
成为== 2
,所以它是out of bounds
【讨论】:
【参考方案6】:简单
for (int i=0; i<2; i++)
for (int j =0; j<2; j++)
System.out.print(Preferences[i][j]);
【讨论】:
非常感谢,这让我摆脱了错误,但现在返回的是 Tom,Cokenullnull,John Pepsi,【参考方案7】:您已将二维数组定义为:
new String [2][2];
并且您的循环似乎正在尝试获取诸如
之类的元素new String [0][3];
等等,因为你的内部 for 循环:
for (int j =0; j<3; j++)
导致数组索引越界。您可能需要将内部 for 循环更改为
for (int j =0; j<2; j++)
然后尝试。
【讨论】:
【参考方案8】:看看你的第二个 for 循环。考虑到每个最终维度只有 2 个值的空间
【讨论】:
【参考方案9】:由于数组长度为 2,并且您从 0 开始循环,如何将 j 从 0 变为 2。
将 for (int j =0; j 更改为 for (int j =0; j
【讨论】:
【参考方案10】: for (String[] row : Preferences)
System.out.println (Arrays.toString(row) );
输出:
[汤姆,可乐,空]
[null,约翰,百事可乐]
【讨论】:
欢迎来到 SO!提供一些解释以及您的答案代码总是一个好主意。寻找解决方案的人更有可能理解您的答案。以上是关于在 Java 中使用 for 循环打印和二维数组的主要内容,如果未能解决你的问题,请参考以下文章