Java 由于某些原因,循环没有';t打印出正确的数组值

Java 由于某些原因,循环没有';t打印出正确的数组值,java,arrays,loops,output,Java,Arrays,Loops,Output,打印阵列时,获取正确输出时遇到一些问题。基本上,我要做的是在main方法中设置一个数组,然后将该数组发送到另一个方法,该方法将打印出如下内容: 89 12 33 7 72 42 76 49 69 85 61 23 右边有3个空格,在第8个数字后开始新的打印行。看起来很容易,但我得到了这样的东西 89 69 85 61 23 出于某种原因,它不会打印位置1和7之间的值。这就是我所拥有的 public class Tes

打印阵列时,获取正确输出时遇到一些问题。基本上,我要做的是在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]);
            }
        }
    }
}
公共类测试
{
公共静态void main(字符串[]args)
{
int[]myInches={89,12,33,7,72,42,76,49,69,85,61,23};
打印阵列值(My英寸);
}
公共静态void printaryValue(int[]myInchesParam){
对于(int i=0;i<8;i++){
系统输出打印(“+myInchesParam[i]);
System.out.println();
对于(i=8;i<12;i++){
系统输出打印(“+myInchesParam[i]);
}
}
}
}

我应该用一段时间来代替吗?或者我仍然可以使用for循环,而我只是做错了吗?

有很多方法可以解决这个问题,但其中之一是使用模运算符检查是否已经打印了8个条目。您将1添加到i,因为数组的索引为0

for(int i=0;i

编辑:此方法的优点是它适用于任何数组长度。其他一些建议不会

在循环中,i开始为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<8;i++){
系统输出打印(“+myInchesParam[i]);
}
System.out.println();
对于(i=8;i<12;i++){
系统输出打印(“+myInchesParam[i]);
}
相反。 甚至更好的可能是

    for (int i = 0; i < 12; i++) {
        System.out.print("   " + myInchesParam[i]);
        if(i==7) {
          System.out.println();
        }
    }
for(int i=0;i<12;i++){
系统输出打印(“+myInchesParam[i]);
如果(i==7){
System.out.println();
}
}

问题在于,在两个嵌套的
循环中使用相同的变量。这将导致外部数组在第一次迭代后停止,并仅打印第二行中的值

如果
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。您的8-11循环位于0-7循环中,并使用相同的循环变量。使用
}
在第二个循环开始之前关闭第一个循环。将
的内部
移动到第一个循环之后。或者,去掉内部的
for
循环,让外部的一个循环遍历所有的值,并且只有当
i%8==7
时才使用
System.out.println
。在第二个for循环中使用另一个变量,因为第一个循环中已经定义了
i
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();
    }
}