我需要在扫描仪扫描输入后键入数字 2 次



您能否帮助我理解为什么我需要输入 2 次才能让扫描仪扫描我的输入数据。 我基本上在下面的代码段中检查的是验证数字是否是 int 类型并且高于 0 以询问玩游戏的玩家数量(猜数字游戏(

验证代码工作得很好,但是...我需要输入数字 2 次...

package pakiet;
import java.util.Random;
import java.util.Scanner;
public class GraModyfikacjaLiczbyGraczy {
public static void main(String[] args) {
Random rand = new Random();
int los = rand.nextInt(11);
int liczbaGraczy;  // number of players
Scanner scan7 = new Scanner(System.in); // zamknac
System.out.println("Type number of players");
while (!scan7.hasNextInt() || scan7.nextInt() < 0) {
System.out.println("Type number of players");
scan7 = new Scanner(System.in);
}
liczbaGraczy = scan7.nextInt();

你初始化Scanner2 次,这就是为什么 -

在 while 循环中 -

while (!scan7.hasNextInt() || scan7.nextInt() < 0) {
System.out.println("Type number of players");
//Issue here
scan7 = new Scanner(System.in);
}

您可以简单地将scan7.next()用于下一个输入。

你可以正确使用do-While循环来实现这一点 -

public static void main(String[] args) {
Random rand = new Random();
int los = rand.nextInt(11);
int liczbaGraczy;  // number of players
Scanner scan7 = new Scanner(System.in); // zamknac
System.out.println("Type number of players");
do {
while (!scan7.hasNextInt()){
System.out.println(" Type number of players :");
scan7.next();
}
liczbaGraczy = scan7.nextInt();
}while (liczbaGraczy < 0);

System.out.println("Number of players :"+liczbaGraczy);
}

希望这会有所帮助。

最新更新