我不确定是否有可能,因为我没有找到确切的答案,但是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更改时调用该方法!

10-07 18:09