我正在编写一个程序,就像一个CoinStar一样。每当我输入哨兵'done'都会出现错误



'字符串终止;

    do {
        System.out.println("Begin Transaction!");
        int coinNumber;
        String deposit;
        do{
            System.out.print(">>");
            coinNumber = input.nextInt();
            deposit = input.nextLine();
            int search = deposit.indexOf(" ", 0);
            String denominations = deposit.substring(search +1);
            if (coinNumber < 0){
                System.out.println("Error! Please deposit positive number.");
            }
            else if (denominations.equalsIgnoreCase("quarter") || denominations.equalsIgnoreCase("quarters")){
                Customer.insertQuarters(coinNumber);
            }
            else if (denominations.equalsIgnoreCase("dime") || denominations.equalsIgnoreCase("dimes")){
                Customer.insertDimes(coinNumber);
            }
            else if (denominations.equalsIgnoreCase("nickels") || denominations.equalsIgnoreCase("nickels")){
                Customer.insertNickles(coinNumber);
            }
            else if (denominations.equalsIgnoreCase("penny") || denominations.equalsIgnoreCase("pennies")){
                Customer.insertPennies(coinNumber);
            }
            else if (denominations.equalsIgnoreCase("quarter") || !denominations.equalsIgnoreCase("quarters")
                    || !denominations.equalsIgnoreCase("dime") || !denominations.equalsIgnoreCase("dimes")
                    || !denominations.equalsIgnoreCase("nickel") || !denominations.equalsIgnoreCase("nickels")
                    || !denominations.equalsIgnoreCase("penny") || !denominations.equalsIgnoreCase("pennies")
                    || !deposit.equalsIgnoreCase("done")){
                System.out.println("Error! Please deposit correct denominations.");
            }
        } while (!deposit.contains("done"));    
        System.out.println(Customer.getVoucher());
        System.out.print("Would you like to start another transaction (y/n): ");
        termination = input.nextLine();
    }
    while (termination.equalsIgnoreCase("y"));

    System.out.println(Customer.getCollectedFees());
    input.close();
}

} '

我需要它是用户输入:(4个季度)和尽可能多的存款。然后,键入'完成',而不需要在存款之间划线。

输入图片描述

谢谢。

呼叫nextInt()时不吸收回车符。尝试在初始化coinNumber之后放置一个Scanner.nextLine():

coinNumber = input.nextInt();
input.nextLine();
deposit = input.nextLine();

最新更新