我是编程Java的新手。我想做一个乐透计划。这是代码: 包me.nutella;
import java.util.Scanner;
public class Lotto {
@SuppressWarnings("resource")
public static void main(String[] args) {
try {
Scanner scanner = new Scanner(System.in);
System.out.print("Enter A Number Between 1-20!");
int choice = scanner.nextInt();
if (choice > 20)
System.out.print("Please Only Pick Numbers Between 1-20!");
int b = (int) (Math.random() * 20) +1;
if (choice == b)
System.out.print("You Win!");
else
System.out.print("You Lost! The correct answer was " + b);
}
catch(Exception E) {
System.out.print("Your Answer Must Be Numeric!");
}
}
}
现在,这部分内容如果我主要关注的话:
if(choice> 20) System.out.print("请仅选择1-20之间的数字!");
我想这样做,如果有人将数字超过20,它将打印该消息。现在这个部分确实有效,但是当我把数字超过20时,它仍然会玩乐透游戏。我想这样做,如果他们把他们的数字高于20,它将不会玩游戏并输入该消息。 怎么办呢?
答案 0 :(得分:0)
如果输入无效,您需要的是一个循环来保持输入:
Scanner scanner = new Scanner(System.in);
System.out.print("Enter A Number Between 1-20!");
int choice = scanner.nextInt();
boolean validInput=false;
while(!validInput) {
int choice = scanner.nextInt();
if (choice > 20) {
System.out.print("Please Only Pick Numbers Between 1-20!");
} else {
validInput=true;
}
}
int b = (int) (Math.random() * 20) +1;
if (choice == b)
System.out.print("You Win!");
else
System.out.print("You Lost! The correct answer was " + b);
答案 1 :(得分:0)
使用do {...} while();
loop
可以做得最优雅。一开始,用户必须始终输入一个数字,因此loop
必须至少执行一次。这是do {...} while();
loop
派上用场的地方。您可以在循环开始时显示消息,然后读入用户输入。如果它在可接受的范围内,则loop
永远不会重新执行,代码会继续运行。但是,如果不可接受,我们会重新执行loop
,直到我们得到可接受的值。
以下是我如何解决这个问题:
Scanner scanner = new Scanner(System.in);
int choice = 0;
do {
System.out.print("Please Pick A Number Between 1-20!");
choice = scanner.nextInt();
} while(choice > 20 || choice < 1);
还值得注意的是,您的消息指出“1-20之间的数字”,但您的代码仅检查choice < 20
,因此如果用户输入的内容少于 20,它会被接受。这包括0,负数,当然还有有效数字范围。我在我的示例中添加了|| choice < 1
检查。