package masivi;
import java.util.Scanner;
public class Masivi {
public static void main (String args[]){
int atzimes[][]={{50,60,55,67,73},
{62,65,71,70,81},
{72,66,77,80,69}};
int a = 0;
int b = 0;
int Y = 0;
int D = 0;
Scanner scan = new Scanner(System.in);
System.out.println("Ievadiet skaitli kuru velaties parbaudit:");
int x = scan.nextInt();
while (Y<16){
if (atzimes[a][b] == x) System.out.println("Skaitlis "+x+" atrodas saja masiva.");
Y=Y+1;
if (atzimes[a][b] == x) break;
b=b+1;
if (b==4) a=a+1;
if (b==4) b=0;
if (a==2) ;
}
if (atzimes[a][b] == x) System.out.println("" );
else System.out.println("Skaitlis "+x+" neatrodas masiva." );
}
}
当我检查最后一个值(69)时,它超出界限,我不知道为什么。我已经尝试更改循环结束的值,但它没有帮助我目前没有想法。它要求x的值并检查是否在数组中。
答案 0 :(得分:1)
尝试使用嵌套for循环重做循环。嵌套for循环看起来更整洁,允许您处理代码。你也不会有太多的错误。
for(int i=0; i<6;i++){
for(int j=0; j<4; j++){
atzimes[i][j]; //do stuff here
}
}
答案 1 :(得分:0)
当您到达arrat界限时,您忘记重置a
的方式与b
相同。
更改
if (a==2) ;
到
if (a==2) a=0;
答案 2 :(得分:0)
Java数组从索引零开始。 atzimes
的维度为[3] [5],因此数组的最后一个元素(69)位于索引[2] [4]。除此之外的任何事情都是超出范围的。您的代码可以增加超过2,因此可能导致ArrayIndexOutOfBoundsException。
此外,您可能希望使用更好的程序结构。调试这样的程序非常复杂。使用嵌套for或while循环而不是while (Y<16)
- 它将使调试更容易。