我希望我的程序输入9个数字。如果我输入一个小于零或大于九的数字,它应该循环返回并再次要求您输入另一个数字。附加的图片是我的程序,有问题。
Scanner input = new Scanner(System.in);
int magic_square[][]=new int[3][3];
int counter = 0;
while(true){
System.out.println("Enter the Magic Number: ");
for(int i = 0; i < 3; i++)
{
for(int j = 0; j < 3; j++)
{
System.out.println("Number "+(i+1)*(j+1));
magic_square[i][j] = input.nextInt();
if (magic_square[i][j] < 1 || magic_square[i][j] > 9)
System.out.println("ERROR! Input range is invalid.");
else
counter++;
}
}
}
答案 0 :(得分:2)
您可以取消嵌套的for
循环并利用counter
变量。
只需使用您的counter
变量:counter/3
将指向该行,counter%3
将指向该列。
counter < 9
有助于避免while(true)
方法,我个人不推荐这种做法。
此外,您的代码允许无效的数字进入数组并继续进入下一个位置,这不是根据您的帖子的预期行为。
Scanner input = new Scanner(System.in);
int magic_square[][]=new int[3][3];
int counter = 0;
System.out.println("Enter the Magic Number: ");
while(counter < 9){
System.out.println("Number "+(counter+1));
int input_num = input.nextInt();
if (input_num < 1 || input_num > 9){
System.out.println("ERROR! Input range is invalid.");
} else {
magic_square[counter/3][counter%3] = input_num;
counter++;
}
}