Java 我能给布尔基元一个初始化的条件吗?

Java 我能给布尔基元一个初始化的条件吗?,java,while-loop,boolean,Java,While Loop,Boolean,我不确定这是否可能,因为我还没有找到确切的答案,但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},

我不确定这是否可能,因为我还没有找到确切的答案,但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();
        }
    }
}
publicstaticvoidmain(字符串[]args){
扫描仪扫描=新扫描仪(System.in);
int[][]五个矩阵={
{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(“要写出哪一行(0-4)”;
int lineNumber=scan.nextInt();
布尔goodLine=lineNumber<0 | | lineNumber>4;
国际单项体育联合会(goodLine){
while(goodLine){
System.out.println(“坏索引”);
System.out.print(“要写出哪一行(0-4)”;
lineNumber=scan.nextInt();
}
}
}
}

这里:

boolean goodLine = lineNumber < 0 || lineNumber > 4;

现在,不用在其他代码中使用布尔变量,只要在行号更改时调用该方法即可

您可能希望更新循环内的布尔值,以避免无限循环

boolean badLine = lineNumber < 0 || lineNumber > 4;
while (badLine) {
    System.out.println("Bad index.");
    System.out.print("Which line do you want to write out (0-4)? ");
    lineNumber = scan.nextInt();
    badLine = lineNumber < 0 || lineNumber > 4;
}
boolean badLine=lineNumber<0 | | lineNumber>4;
while(badLine){
System.out.println(“坏索引”);
System.out.print(“要写出哪一行(0-4)”;
lineNumber=scan.nextInt();
badLine=线号<0 | |线号>4;
}

我重新命名了
布尔值
,因为它的原始名称令人困惑。我还消除了
if
条件,因为它是冗余的。

while循环中缺少一行

boolean goodLine = lineNumber < 0 || lineNumber > 4;

考虑将其称为“badLine”,因为用户输入错误(不是0-4个值)

简化代码且易于理解

import java.util.Scanner;

public class Post3 {

    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.println("Which line do you want to write out (0-4)? ");
        int input = -1;
        while(true) {
            System.out.println("input valid number between 0 to 4");
            input = scan.nextInt();
            if(input >= 0 && input <= 4) {
                break;
            }
        }
        System.out.println("input is "+input);
        scan.close();

    }

}
import java.util.Scanner;
公营职位3{
公共静态void main(字符串[]args){
扫描仪扫描=新扫描仪(System.in);
int[][]五个矩阵={
{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.println(“要写出哪一行(0-4)”;
int输入=-1;
while(true){
System.out.println(“输入0到4之间的有效数字”);
输入=scan.nextInt();

如果(输入>=0&&input,您能准确解释什么“不起作用”吗?如果没有错误消息或stacktrace,很难判断。在
中添加
goodLine=lineNumber<0 | | lineNumber>4;
while
循环退出。@secretsuperstar这看起来像是一个简单的解决方案,但从概念上讲是错误的:即使代码只是一行,也不会重复代码。因为你必须记住这一点当条件需要调整时,您不必更新支票的每个副本。复制代码始终是引入未来错误的第一步。@dave您是对的。我没有提到错误消息。它进入了一个无限循环。后来我删除了if条件,但这也没有帮助。@GhostCat感谢您的注释。我很抱歉金恩:我明白答案。:)我完全是一个新手。当然我会接受其中一个解决方案。很好。谢谢。你的解决方案带来了一个新的想法。另一方面,你的解决方案不会处理第一个数据请求。如果可以处理,这将是我想要避免的代码重复。它可以处理。它将继续,直到用户输入有效的输入。你想接受两个吗输入?我的措辞不准确。我需要一个'System.out.println(“坏索引”);'错误代码,以防出现坏数字(如问题内部所示)。如果我在while循环中使用,它将被读出,无论答案是否正确。这就是为什么我需要在循环之前请求数据。谢谢。重命名建议确实是合理的。而且我真的忘记了每次都对while循环检查条件。谢谢。完美的解决方案。我选择另一个是因为它是霍特。
public boolean goodLine(Scanner scan) {
    System.out.print("Which line do you want to write out (0-4)? ");
    int lineNumber = scan.nextInt();
    return lineNumber < 0 || lineNumber > 4;
}
while(goodLine());
import java.util.Scanner;

public class Post3 {

    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.println("Which line do you want to write out (0-4)? ");
        int input = -1;
        while(true) {
            System.out.println("input valid number between 0 to 4");
            input = scan.nextInt();
            if(input >= 0 && input <= 4) {
                break;
            }
        }
        System.out.println("input is "+input);
        scan.close();

    }

}