好的,所以我使用java.util.Scanner
浏览了许多验证脚本,但找不到任何可以帮助我的东西。我已经很好地了解了如何设置我的程序,但是我仍然需要一些帮助才能让它以我想要的方式工作。基本上,我的目标是要求用户输入一个高度,我想确保它不超过84英寸,数字和正面。
到目前为止,这是我的代码:
// the part inside main() that is relevant
double height = 0;
Scanner input = new Scanner(System.in);
height = get_height(height, input);
private static double get_height(double height, Scanner input) {
do {
System.out.print("Please enter your height (in inches): ");
while (!input.hasNextDouble() || input.nextDouble() > 84) {
if (!input.hasNextDouble()) {
System.out.print("You must enter a valid number: ");
input.next();
}
else if (input.nextDouble() > 84) {
System.out.print("Are you really taller than 7 feet? Try again: ");
input.next();
}
}
height = input.nextDouble();
} while (height <= 0);
return height;
}
这些是我得到的结果:
Please enter your height (in inches): hey
You must enter a valid number: 100
100
Are you really taller than 7 feet? Try again: 64
(blank space)
64
64
正如你所看到的,或者你可能无法分辨,它没有完全按照它应该发出的正确信息,然后只留下空行,你可以在它需要之前输入数据两次(你可以见最后2行)。我不知道为什么会这样做,但显然它与我的逻辑有关。我想在循环之后使用if语句来验证它是7英尺,但如果它无效那么我该如何重新启动循环呢?我唯一的想法是创建一个名为“valid”的布尔变量,并最初将其设置为false,当它为true时退出循环并返回。我可以使用一些建议!!
哦,这是那些想知道的人的作业。我不希望我的程序是为我写的,但建议很可爱。
编辑:好的,我自己拿到了。感谢我收到的大量帮助.. private static double get_height(double height, Scanner input) {
boolean valid = false;
while (!valid) {
do {
System.out.print("Please enter your height (in inches): ");
while (!input.hasNextDouble()) {
System.out.print("You must enter a valid number! Try again: ");
input.next();
}
height = input.nextDouble();
if (height > 84) {
System.out.println("Are you really over 7 feet? I don't think so..");
valid = false;
}
else {
valid = true;
}
} while (height <= 0);
}
return height;
}
答案 0 :(得分:0)
你只能使用1 do while循环
do {
//print messages
height = input.nextDouble();
} while (!"validation conditions");
或者如果您想要不同的消息
boolean valid = false;
do {
//edit
System.out.print("Please enter your height (in inches): ");
while (!input.hasNextDouble()) {
System.out.print("You must enter a valid number! Try again: ");
input.next();
}// end edit
height = input.nextDouble();
if(height > 84) {
valid = false;
System.out.println("too tall");
} //add more else if conditions
else {
valid = true;
}
} while (!valid);