for循环中的奇怪扫描程序类错误

时间:2016-02-21 02:07:27

标签: java arrays java.util.scanner

我的代码部分:

public static String[] getNames(int players) {

    System.out.println("What are the names of the players?");

    String[] playerNames = new String[players + 1];
    playerNames[0] = "Dealer";
    for (int i = 1; i < players + 1; i++) {

      playerNames[i] = input.next(); 
    }
    return playerNames;
  }

它编译得很好,但问题是当你运行它时:

How many people are playing?
1
What are the names of the players?
Johny
Bob
Exception in thread "main" java.util.InputMismatchException
    at java.util.Scanner.throwFor(Scanner.java:864)
    at java.util.Scanner.next(Scanner.java:1485)
    at java.util.Scanner.nextBoolean(Scanner.java:1782)
    at BlackJack.playTurn(BlackJack.java:17)
    at BlackJack.everyoneGo(BlackJack.java:36)
    at BlackJack.main(BlackJack.java:112)

代码的另一部分询问有多少人玩物并将输入的数字(在本例中为1)存储为整数玩家。因此,for循环中的[player +1]应该等于2,因此如果你有1个玩家,for循环应该只运行一次,第一次检查执行1&lt; 2和第二次2! 2所以它不应该运行,但它出于某种原因,我不应该能够输入第二个名称。无论如何,在您输入第二个名称后立即(或如果您说2个人等,则为第三个名称),您会收到异常和错误信息。

我也试过把system.out.println(“test1”);就在播放器名称[i] = input.next()之后的正前方和test2之后;看看会发生什么。

这是结果:

How many people are playing?
1
What are the names of the players?
test1
johnny
test2
bob
Exception in thread "main" java.util.InputMismatchException
    at java.util.Scanner.throwFor(Scanner.java:864)
    at java.util.Scanner.next(Scanner.java:1485)
    at java.util.Scanner.nextBoolean(Scanner.java:1782)
    at BlackJack.playTurn(BlackJack.java:17)
    at BlackJack.everyoneGo(BlackJack.java:36)
    at BlackJack.main(BlackJack.java:112)

你可以看到它也没有第二次打印test1,这是在for循环开始时(在它应该要求第二个名字之前)这真的很奇怪。

任何想法/解决方案?

由于

0 个答案:

没有答案