如何读取2个数字之间的数字?

时间:2015-03-02 11:55:10

标签: java

我是Java的新手,我正在尝试编写一个小程序,要求用户输入0-4之间的整数。到目前为止我已写过这篇文章,但它似乎无法奏效!谁能告诉我哪里错了?

import java.util.Scanner;
public class GameCharSelect {

    public static void main(String[] argh){
        int myChar;
        Scanner in = new Scanner(System.in);
        {
            System.out.print("choose a player: ");
            myChar = in.nextInt();
        }while(myChar>0 && myChar<4);

        System.out.println("--------");
        System.out.println("you chose "+ myChar);

    }

}

现在我希望数字为1,2或3,否则它会循环,直到用户输入其中一个,但程序此刻接受任何数字。我哪里错了?

4 个答案:

答案 0 :(得分:3)

您的循环中缺少do个关键字。你的条件也应该颠倒过来:

public static void main(String[] argh) {
    int myChar;
    Scanner in = new Scanner(System.in);
    do {
        System.out.print("choose a player: ");
        myChar = in.nextInt();
    } while (myChar <= 0 || myChar >= 4);

    System.out.println("--------");
    System.out.println("you chose " + myChar);

}

答案 1 :(得分:1)

你的状况有误。
您正在检查char是否大于0 AND 是否小于4,如果是,它将再次执行循环,而您所追求的是相反的。
更改语句以检查myChar是否小于1 OR 高于3 myChar < 1 || myChar > 3

您在do的开头还缺少do-while

答案 2 :(得分:1)

您的代码中存在两个问题:

  • 你是以错误的方式处理,你应该做一个do-while声明或者在{...}之前放一会儿。
  • 您还想在输入错误的数字(&lt; 1或&gt; 3)时运行循环,而不是在输入正确的数字(1到3之间)时运行循环...所以您还需要更改表达式

我的代码是这样的:

import java.util.Scanner;
public class GameCharSelect {

    public static void main(String[] argh){
        int myChar;
        Scanner in = new Scanner(System.in);
        do{
            System.out.print("choose a player: ");
            myChar = in.nextInt();
        } while(myChar<1 || myChar>3);

        System.out.println("--------");
        System.out.println("you chose "+ myChar);

    }

}

答案 3 :(得分:-1)

你的循环应该看起来像

while (true) {
    System.out.print("Choose a player: ");
    myChar = in.nextInt();
    if (myChar > 0 && myChar < 4) {
        break; // out of the loop
    }
}

如果扫描值为1,2或3,那么您只能break;


@Ali,while(true)方法非常好。实际上,看到它们比在实际代码中运行do-while()要常见得多。收到的downvote是主观的,并且基于个人编码风格偏好,而不是对答案正确性的指示。