我不确定是否有可能,因为我没有找到确切的答案,但是NetBeans没有给出错误。但是,如果可能,为什么我的代码不起作用?
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int[][] fiveMatrix = {
{1, 4, 7, 5, 3}, {3, 7, 9, 10, 1}, {4, -3, 2, -4, 1}, {5, 9, 6, 4, 3}, {1, 2, 3, 4, 5},};
System.out.print("Which line do you want to write out (0-4)? ");
int lineNumber = scan.nextInt();
boolean goodLine = lineNumber < 0 || lineNumber > 4;
if (goodLine) {
while (goodLine) {
System.out.println("Bad index.");
System.out.print("Which line do you want to write out (0-4)? ");
lineNumber = scan.nextInt();
}
}
}
}
最佳答案
这里:
boolean goodLine = lineNumber < 0 || lineNumber > 4;
将被评估一次,并将结果分配给该变量。
以后对
lineNumber = scan.nextInt();
的更改不会更改该布尔变量!“正确”的解决方案:您必须重新计算布尔属性。但理想情况下,不是通过复制代码,而是通过创建一个小的辅助方法:
boolean isGoodLine(int lineNumber) { return lineNumber < 0 || lineNumber > 4; }
现在,您无需在其他代码中使用布尔变量,而只需在lineNumber更改时调用该方法!