Java独占播放器选择验证

Java独占播放器选择验证,java,Java,我正在用java编写一个垄断类型的游戏,在设置玩家选择函数的验证时遇到了一些问题。用户必须在2-4名玩家之间进行选择 下面是我试图利用if-else语句和while循环来实现这一点的尝试 我想不出正确的方法来实现这一点,如果有任何建议,我将不胜感激 int numberPlayers = 0; Scanner scanner = new Scanner(System.in); System.out.println("Please enter Number of players (2-4)");

我正在用java编写一个垄断类型的游戏,在设置玩家选择函数的验证时遇到了一些问题。用户必须在2-4名玩家之间进行选择

下面是我试图利用if-else语句和while循环来实现这一点的尝试

我想不出正确的方法来实现这一点,如果有任何建议,我将不胜感激

int numberPlayers = 0;
Scanner scanner = new Scanner(System.in);
System.out.println("Please enter Number of players (2-4)");

if (scanner.nextInt() >= 2 && scanner.nextInt() <= 4) {
    numberPlayers = scanner.nextInt();
    System.out.println(numberPlayers + " players selected");
} else {
    while (scanner.nextInt() < 2 || scanner.nextInt() > 4) {
        System.out.println("Not a valid choice. Please enter Number of players (2-4)");
    }
}
int numberPlayers=0;
扫描仪=新的扫描仪(System.in);
System.out.println(“请输入玩家数量(2-4)”;
if(scanner.nextInt()>=2&&scanner.nextInt()4){
System.out.println(“不是有效的选择。请输入玩家数量(2-4)”;
}
}

您可以使用
do while
循环向用户询问至少一次玩家计数,并持续询问,直到输入有效

public int askForPlayers(Scanner scanner) {
    int numberPlayers = 0;
    do {
        System.out.println("Please enter Number of players (2-4)");
        numberPlayers = scanner.nextInt();
    } while(numberPlayers < 2 || numberPlayers > 4);
    return numberPlayers;
}
public int askForPlayers(扫描仪){
int numberPlayers=0;
做{
System.out.println(“请输入玩家数量(2-4)”;
numberPlayers=scanner.nextInt();
}而(层数<2 | |层数>4);
返回层数;
}

当您使用
扫描仪
对象时,请记住,用户可能会输入非数字的其他内容。您必须使用
hasNextInt()
next()
来处理这种情况。此外,当您关闭
扫描器
对象时,您也在关闭您使用的
输入流
,请参见。

您可以使用
do while
循环向用户询问至少一次玩家计数,并持续询问,直到输入有效

public int askForPlayers(Scanner scanner) {
    int numberPlayers = 0;
    do {
        System.out.println("Please enter Number of players (2-4)");
        numberPlayers = scanner.nextInt();
    } while(numberPlayers < 2 || numberPlayers > 4);
    return numberPlayers;
}
public int askForPlayers(扫描仪){
int numberPlayers=0;
做{
System.out.println(“请输入玩家数量(2-4)”;
numberPlayers=scanner.nextInt();
}而(层数<2 | |层数>4);
返回层数;
}

当您使用
扫描仪
对象时,请记住,用户可能会输入非数字的其他内容。您必须使用
hasNextInt()
next()
来处理这种情况。另外,当您关闭
扫描仪
对象时,您也在关闭您使用的
InputStream
,请参见。

我看到您的代码对扫描仪进行了三次调用以检索整数输入,而您可能只需要进行一次调用。哎呀,您正在使用while循环条件抛出用户的输入:
while(scanner.nextInt()<2 | | scanner.nextInt()>4)
获取用户的输入并将其完全丢弃,因为输入未放入变量中。将用户的输入放入while循环中的变量中,而不是while循环的条件中。检查条件中此变量的状态。每次说scanner.nextInt()您的程序查找用户输入,而不是调用它一次并将其存储在变量中。我看到您的代码对扫描仪进行了三次调用以检索整数输入,而您可能只应进行一次调用。Yikes,您正在使用while循环条件抛出用户输入,如下所示:
while(scanner.nextInt()<2 | | scanner.nextInt()>4)
获取用户的输入并将其完全丢弃,因为输入未放入变量中。将用户的输入放入while循环中的变量中,而不是while循环的条件中。在条件中检查此变量的状态。每次说scanner.nextInt()时您的程序查找用户输入,而不是调用它一次并将其存储在变量中。