我应该编写一个程序,询问用户“你喜欢java吗?”如果用户输入“是”或“否”,则输入“是”或“否”,打印“谢谢”并退出程序。否则,打印“再试一次”,然后再次提示用户。
import java.util.*;
public class Questionaire{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
System.out.print("Do you love java? > ");
String output=sc.nextLine();
while(!output.equalsIgnoreCase("yes") || !output.equalsIgnoreCase("no")){
System.out.println("Try again!");
System.out.print("Do you love java? > ");
output=sc.nextLine();
if(output.equalsIgnoreCase("yes") || output.equalsIgnoreCase("no")){
System.out.println("Thank you!");
break;
}
}
}
}
阅读评论并再次尝试。
import java.util.*;
public class Questionaire{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
System.out.print("Do you love java? > ");
String output=sc.nextLine();
while(!output.equalsIgnoreCase("yes") || !output.equalsIgnoreCase("no")){
if(output.equalsIgnoreCase("yes") || output.equalsIgnoreCase("no")){
System.out.println("Thank you!");
break;
}
System.out.println("Try again!");
System.out.print("Do you love java? > ");
output=sc.nextLine();
}
}
}
我明白了!!!谢谢大家!
答案 0 :(得分:1)
while(!output.equalsIgnoreCase("yes") || !output.equalsIgnoreCase("no"))
条件应改为
while(!output.equalsIgnoreCase("yes") && !output.equalsIgnoreCase("no")){
此外,您还需要在一段时间之外添加一个if块来处理第一个输入大小写。
原因:
案例1:假设您输入“ABC”。现在
不等于“是”=真
它不等于“No”= True(由于使用短路OR,因此不进行评估)。这种情况很好。
案例2:假设您输入“是”。现在
不等于“是”=假
不等于“否”=真。
By boolean Algebra:False OR True计算为True.Hence无限循环。
答案 1 :(得分:1)
重构代码,这应该对你有用。使用do-while
代码将始终执行一次,但如果输出为yes或no,则不会再次循环。
public class Questionaire{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
String output;
do{
System.out.print("Do you love java? > ");
output=sc.nextLine();
if(output.equalsIgnoreCase("yes") || output.equalsIgnoreCase("no")){
System.out.println("Thank you!");
}
else
{
System.out.println("Try again!");
}
}while(!output.equalsIgnoreCase("yes") && !output.equalsIgnoreCase("no"))
}
}
答案 2 :(得分:1)
尝试使用while loop
运行的简单方法,直到输入yes or no
。它只会在用户输入yes or no
时中断,因此请在结束中打印Thank you!
。
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("Do you love java? > ");
String output = sc.nextLine();
while(!(output.equalsIgnoreCase("yes") || output.equalsIgnoreCase("no"))) {
System.out.println("Try again!");
System.out.print("Do you love java? > ");
output = sc.nextLine();
}
System.out.println("Thank you!");
}
答案 3 :(得分:0)
尝试它(它比原始程序更容易处理)
String output = "";
while (!output.equalsIgnoreCase("yes") || !output.equalsIgnoreCase("no")) {
System.out.print("Do you love java? > ");
output = sc.nextLine();
if (output.equalsIgnoreCase("yes") || output.equalsIgnoreCase("no")) {
System.out.println("Thank you!");
break;
} else {
System.out.println("Try again!");
}
}
答案 4 :(得分:-1)
您班级的最佳解决方案是:
import java.util.*;
public class Questionaire{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
System.out.print("Do you love java? > ");
String output=sc.nextLine();
while(true){ // Keep doing this forever
if(output.equalsIgnoreCase("yes") || output.equalsIgnoreCase("no")){ // If the user enters yes or enters no
System.out.println("Thank you!"); //Print thank you
break; // Exit
} else {
System.out.println("Try again"); //Print try again
output = sc.nextLine(); // Get new user input.
}
}
sc.close();
}
}