我正在尝试使用扫描程序循环作为我的输入类中的方法,在我的main方法中。我一直收到这个错误:
Exception in thread "main" java.lang.NullPointerException
at Blackjack.Input.getBet(Input.java:27)
at Blackjack.BlackJackGame.main(BlackJackGame.java:23)
这是循环(这个循环在一个单独的类中):
public int getBet(int cash) {
Scanner sc = new Scanner(System.in);
int bet = sc.nextInt();
while (bet > cash) {
outputter.cannotBet();
outputter.askBet();
bet=sc.nextInt();
}
return bet;
}
这是我在我的主要方法中称之为的地方:
user.setBet(input.getBet(user.getCash()));
基本上,不应该允许用户下注比他或她更多的钱,并且虽然下注超过他或她拥有的现金,但它应该循环并要求用户重新输入数字。非常感谢任何帮助。
答案 0 :(得分:0)
尝试替换此
public int getBet(int cash) {
Scanner sc = new Scanner(System.in);
int bet = sc.nextInt();
while (bet > cash) {
outputter.cannotBet();
outputter.askBet();
bet=sc.nextInt();
}
return bet;
}
用这个
public int getBet(int cash) {
Scanner sc = new Scanner(System.in);
int bet = 0;//or you could put this as a global variable, but its considered "bad practise"
while (bet > cash) {
bet = sc.nextInt();
outputter.cannotBet();
outputter.askBet();
continue;
}
return bet;
}
希望有所帮助
答案 1 :(得分:0)
我让它变得更简单了。请试试这个。 我从代码中删除了其他未知方法。
Scanner sc = new Scanner(System.in);
int bet = 0;
do {
bet=sc.nextInt();
} while (bet > cash);
return bet;
如果您将现金作为100传递,那么您输入200作为投注,它将再次询问输入。如果下注为20,则条件为false并返回该值。希望它能帮到你。