使if语句取消其他代码。 (JAVA)

时间:2015-11-12 16:09:25

标签: java

我是编程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,它将不会玩游戏并输入该消息。 怎么办呢?

2 个答案:

答案 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检查。