本质上,我正在尝试使用 for 循环将用户输入存储在多维数组中。如果用户输入了不期望/不需要的内容(例如小于 0),将显示一条警告消息,理想情况下循环应该“等待”直到它接收到下一个有效整数。
目前,我的代码(如下所示)工作正常,但我想知道是否有更好/更优化的方法来执行此操作。
for (int row = 0; row < array.length; row++) {
for (int column = 0; column < array[row].length; column++) {
int number = input.nextInt();
if((input.nextInt() >= 0) {
array[row][column] = number;
} else {
System.out.println("Input must be > 0.");
column--;
}
}
最佳答案
使用 do..while
循环等待用户输入有效内容。这比修改循环计数器更干净。
for (int row = 0; row < array.length; row++) {
for (int column = 0; column < array[row].length; column++) {
bool hasEnteredValidInput = false;
do
{
int number = input.nextInt();
if(number >= 0) {
array[row][column] = number;
hasEnteredValidInput = true
} else {
System.out.println("Input must be > 0.");
}
} while (!hasEnteredValidInput);
}
}
更好的方法是将读取代码提取到它自己的函数中:
for (int row = 0; row < array.length; row++) {
for (int column = 0; column < array[row].length; column++) {
array[row][column] = readValidInputFromUser();
}
}
public string readValidInputFromUser()
{
while(true)
{
int number = input.nextInt();
if(number >= 0) {
return number;
} else {
System.out.println("Input must be > 0.");
}
}
}
这个版本非常清楚你在做什么。
关于java - 在 Java 中针对特定情况停止 for 循环中的增量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10467911/