Java 由于某些原因,循环没有';t打印出正确的数组值
打印阵列时,获取正确输出时遇到一些问题。基本上,我要做的是在main方法中设置一个数组,然后将该数组发送到另一个方法,该方法将打印出如下内容: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
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();
}
}