循环有问题

时间:2013-10-22 18:37:21

标签: java

while (c>5){  
      if (myArray[a][b]>x && myArray[a][b]<y) System.out.println("Skaitlis " +a+ ". rindaa " +b+ ". kollonaa Ieklaujas intervaalaa ");
      else System.out.println("Skaitlis " +a+ ". rindaa " +b+ ". kollonaa Neieklaujas intervaalaa "+x);
if (a>3) b=b+1;
      if (a>3) a=0 ;

              else a=a+1;
      if (b>3) break;

       }    

我有一个包含4行和4列的数组,我无法在列之间切换(b始终保持为0)。

2 个答案:

答案 0 :(得分:0)

while (c > 5) {  
  if (myArray[a][b]>x && myArray[a][b]<y) {
    System.out.println("Skaitlis " +a+ ". rindaa " +b+ ". kollonaa Ieklaujas intervaalaa ");
  } else {
    System.out.println("Skaitlis " +a+ ". rindaa " +b+ ". kollonaa Neieklaujas intervaalaa "+x);
  }
  if (a>3) {
    b=b+1;
  }
  if (a>3) {
    a=0 ;
  } else {
    a=a+1;
  }
  if (b>3) {
    break;
 }
}  

添加花括号可能改变了程序的逻辑,但它确实使它更具可读性。现在我们可以看到它写得更好

while (c > 5) {  
  if (myArray[a][b]>x && myArray[a][b]<y) {
    System.out.println("Skaitlis " +a+ ". rindaa " +b+ ". kollonaa Ieklaujas intervaalaa ");
  } else {
    System.out.println("Skaitlis " +a+ ". rindaa " +b+ ". kollonaa Neieklaujas intervaalaa "+x);
  }
  if (a > 3) {
    b = b+1;
    a = 0 ;
  } else {
    a = a+1;
  }
  if (b > 3) {
    break;
 }
} 

假设您开始a=0b=0,很明显您将访问4x4数组的每个元素。

我强烈建议您使用两个嵌套的for循环重写此内容。

答案 1 :(得分:0)

如果你的aray是4x4大小,你的代码应该抛出ArrayIndexOutOfBoundsException因此会尝试访问myArray[4][0]

你应该改为这个;

if (a == 3) b=b+1;
if (a == 3) a=0 ;
else a=a+1;
if (b>3) break;