打印阵列时,我在获取正确输出时遇到一些麻烦。基本上我要做的是在main方法中设置一个数组,然后将该数组发送到另一个打印出这样的东西的方法:
89 12 33 7 72 42 76 49
69 85 61 23
右边是3个空格,在第8个数字后面开始新的打印行。看起来很简单,但我得到的是这样的东西。
89
69 85 61 23
由于某种原因,它不会打印位置1和7之间的值。这就是我所拥有的。
public class Test
{
public static void main (String [] args)
{
int [] myInches = {89,12,33,7,72,42,76,49,69,85,61,23};
printArrayValues(myInches);
}
public static void printArrayValues(int [] myInchesParam) {
for (int i = 0; i < 8; i++) {
System.out.print(" " + myInchesParam[i]);
System.out.println();
for (i = 8; i < 12; i++) {
System.out.print(" " + myInchesParam[i]);
}
}
}
}
我应该使用do-while吗?或者我仍然可以用for循环来做它我只是做错了吗?
有很多方法可以解决这个问题,但有一种方法可以使用模运算符来检查是否已经打印了8个条目。您向i添加1,因为您的数组是0索引。
for (int i = 0; i < myInchesParam.length; i++) {
System.out.print(myInchesParam[i] + " ");
if((i + 1) % 8 == 0) {
System.out.println();
}
}
编辑:此方法的好处是它适用于任何数组长度。其他一些建议则不会。
好吧,发生的事情是在循环中我从0开始,然后当它到达第二个循环时你将i设置为8,因此条件i <8不再有效。最简单的修复方法是不嵌套你的循环,但有
for (int i = 0; i < 8; i++) {
System.out.print(" " + myInchesParam[i]);
}
System.out.println();
for (i = 8; i < 12; i++) {
System.out.print(" " + myInchesParam[i]);
}
代替。甚至可能更好
for (int i = 0; i < 12; i++) {
System.out.print(" " + myInchesParam[i]);
if(i==7) {
System.out.println();
}
}
问题是你在两个嵌套的for
循环中使用相同的变量。这将导致外部数组在第一次迭代后停止,并仅打印第二行中的值。
如果i > 0 && i % 8 == 0
,只需使用一个循环并打印一个新行:
public static void printArrayValues(int[] myInchesParam) {
for (int i = 0; i < myInchesParam.length; i++) {
if (i > 0 && i % 8 == 0)
System.out.println();
System.out.print(" " + myInchesParam[i]);
}
}
或者你可以使用i % 8 === 7
后来插入一个新行:
public static void printArrayValues(int[] myInchesParam) {
for (int i = 0; i < myInchesParam.length; i++) {
System.out.print(" " + myInchesParam[i]);
if (i % 8 == 7)
System.out.println();
}
}
但是在某些情况下,您可以使用最后一个解决方案获得一个尾随的新行。