我正在开发一个带有数据验证的贷款计算器。我写了一切,很好。我唯一想知道的是如何在用户被问到“继续y / n?:”的位置编写一个while循环,然后只有当用户键入y / Y并且程序ENDS ONLY用户时才继续执行程序类型n / N,任何其他输入应给出错误消息,如“无效,您只能输入Y或N”。因此,如果用户输入“x”,则应显示错误消息。
我已尝试过if if子句,我也尝试用我在程序其余部分使用的方法验证数据,但我根本不知道如何验证字符串。我只能用原始数据类型来做。
这是我现在知道如何编写循环的唯一方法,问题是它只会以Y之外的任何东西结束程序。
分配的选项是使用JOptionPane,但我不知道如何将其合并到while循环中并让它显示yes和no按钮。
String choice = "y";
while (choice.equalsIgnoreCase("y")) {
// code here
System.out.print("Continue? (y/n): ");
choice = sc.next();
}
}
答案 0 :(得分:1)
while(true) {
//Do something
String choice;
boolean validChoice = false;
boolean breakLoop = false;
while(!validChoice) {
System.out.print("Stay in loop(Y/N)?");
choice = sc.next();
if(choice.equalsIgnoreCase("Y")) {
validChoice = true;
}
if(choice.equalsIgnoreCase("N")) {
validChoice = true;
breakLoop = true;
}
if(!validChoice) {
System.out.print("Error! Pick only Y/N");
}
}
if(breakLoop) {
break;
}
//Do something
}
答案 1 :(得分:0)
怎么样?
while(true) {
// do something
// get user input (Y or N)
if(input.equals("Y") {
continue;
} else if(input.equals("N")) {
break;
} else {
System.out.println("entered option not valid, please use Y or N");
}
}
答案 2 :(得分:0)
基本上,你需要两个循环:一个在做工作,另一个在内部提示用户验证。
boolean isContinuing = true;
while (isContinuing) {
// do work
boolean inputIsInvalid = true;
while (inputIsInvalid) {
System.out.print("Continue? (y/n): ");
String choice = sc.next();
if ("y".equalsIgnoreCase(choice)) {
inputIsInvalid = false;
}
else if ("n".equalsIgnoreCase(choice)) {
inputIsInvalid = false;
isContinuing = false;
}
else {
System.err.print("Error: Only valid answers are Y/N.");
}
}
}
节点:我使用的是布尔变量而不是break
语句,它使代码更加直接和可读。
答案 3 :(得分:0)
我发现最好的方法是引入一种解释方法。
while (userWantsToContinue()) {
// do another round
}
理想情况下,你甚至可以在一个UI抽象的接口上创建一个方法:
while (user.wantsToContinue()) {
// do another round
}
将行为与UI实现分离。