跨类使用扫描程序循环(Java)

时间:2015-06-04 23:31:35

标签: java debugging while-loop java.util.scanner

我正在尝试使用扫描程序循环作为我的输入类中的方法,在我的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()));

基本上,不应该允许用户下注比他或她更多的钱,并且虽然下注超过他或她拥有的现金,但它应该循环并要求用户重新输入数字。非常感谢任何帮助。

2 个答案:

答案 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并返回该值。希望它能帮到你。