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
打印输出后也应该有换行符
答案 0 :(得分:-2)
我不太确定“卡住”是什么意思,但是我对Scanners的一个常见错误是当你使用input.nextInt()时,它不会在单独的行中读取两个整数。
在这种情况下例如:
输入:
3 4
7
Scanner可以使用input.nextInt()轻松读取前两个整数,但不会到达第三个整数,因为它位于一个单独的行中。要解决这个问题,你可以使用:
Integer.parseInt(input.nextLine());
在第一行的末尾。
你也可以使用:
input.nextLine().split(" ");
它将为您提供一个字符串数组,其中元素由该行中的空格分隔。但是你需要单独解析它们。