如果输入为空,我将无法打印出来

问题描述 投票:0回答:1

因此,我编写了一个程序,该程序从数组中循环出两个问题。我要在这里发生的事情是提示用户输入的是空白还是空,以及用户是否输入除a,b和c之外的任何其他字母,数字或符号。这里发生的事情是,每当我在第一个问题上输入a时,它也会打印“该答案不能为空”,这是我输入有效输入后就不应出现的。

for(int i = 0; i < question.length; i++){
    do{
        System.out.print(question[i].prompt + "\nAnswer: ");
        answer = s.nextLine();
        if(!answer.equalsIgnoreCase("a") &&
           !answer.equalsIgnoreCase("b") &&
           !answer.equalsIgnoreCase("c")){  
                System.out.println("Invalid input!\n");
        } if(!answer.isEmpty()){
            System.out.println("The answer can't be blank.\n");
        }
    } while(!answer.equalsIgnoreCase("a") &&
        !answer.equalsIgnoreCase("b") &&
        !answer.equalsIgnoreCase("c") &&
        !answer.isEmpty());
    if(answer.equalsIgnoreCase(question[i].answer)){
            score++;
    }
}
java if-statement logical-operators
1个回答
1
投票

您的代码应该看起来像这样...

for(int i = 0; i < question.length; i++){
    do{
        System.out.print(question[i].prompt + "\nAnswer: ");
        answer = s.nextLine();
        if(answer.isEmpty()){
            System.out.println("The answer can't be blank.\n");
        }else if(!answer.equalsIgnoreCase("a") &&
           !answer.equalsIgnoreCase("b") &&
           !answer.equalsIgnoreCase("c")){  
                System.out.println("Invalid input!\n");
        } 
    } while(!answer.equalsIgnoreCase("a") &&
        !answer.equalsIgnoreCase("b") &&
        !answer.equalsIgnoreCase("c") &&
        !answer.isEmpty());
    if(answer.equalsIgnoreCase(question[i].answer)){
            score++;
    }
}

[我在代码中所做的更改:删除了多个if,而是使用if-else,并从!中删除了!answer.isEmpty()。希望这对您有帮助:-)

快乐编码

© www.soinside.com 2019 - 2024. All rights reserved.