Java Scanner不接受用户的输入

时间:2016-12-29 03:58:25

标签: java

public class GameLogic {
    Scanner input = new Scanner(System.in);

    public void buyHouse(Player player, int propertyIndex) {
        boolean boughtHouse = false;
        GameboardSquare property = Board.getMonopolyBoard()[propertyIndex];
        int a = 0;
        if (property.getNumberHouse() <= 3) {
            System.out.println("How many houses you want to buy? it must be between 1-4: ");
            a = input.nextInt();
            System.out.println(a);
        }
    }
}

有人可以告诉我我做错了什么。每次我运行代码时都不允许我在控制台中输入任何内容,它只会在行a = input.nextInt();上吮吸。我尝试在调试器中调试它,但仍然不知道它在哪里打破这是我的测试用例

public class GameLogicTest extends TestCase {
    public void testBuyHouse() throws Exception {
        Player player = new Player(1000,0);
        GameboardSquare property = new GameboardSquare("Seb", 100,50,50,100,150,200,250,300,200,0,3,0,player,false);
        GameboardSquare[] gameboard = new GameboardSquare[1];
        gameboard[0] = property;
        GameLogic game = new GameLogic();
        Board board = new Board(gameboard);
        board.setMonopolyBoard(gameboard);
        game.buyHouse(player,0);
    }
}

https://i.stack.imgur.com/Dovlc.png

打印输出后也应该有换行符

1 个答案:

答案 0 :(得分:-2)

我不太确定“卡住”是什么意思,但是我对Scanners的一个常见错误是当你使用input.nextInt()时,它不会在单独的行中读取两个整数。

在这种情况下例如:

输入:

3 4

7

Scanner可以使用input.nextInt()轻松读取前两个整数,但不会到达第三个整数,因为它位于一个单独的行中。要解决这个问题,你可以使用:

Integer.parseInt(input.nextLine());

在第一行的末尾。

你也可以使用:

input.nextLine().split(" ");

它将为您提供一个字符串数组,其中元素由该行中的空格分隔。但是你需要单独解析它们。