Java 我正在写一个程序来扮演一个硬币之星。每当我输入sentinel'done'时,都会出现错误

Java 我正在写一个程序来扮演一个硬币之星。每当我输入sentinel'done'时,都会出现错误,java,Java,`字符串终止 do { System.out.println("Begin Transaction!"); int coinNumber; String deposit; do{ System.out.print(">>"); coinNumber = input.nextInt(); deposit = input.nextLine()

`字符串终止

    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时,回车字符不会被占用。尝试将Scanner.nextLine放在您的号码后面:


Uhu,发布代码而不是快照。您的代码需要一个int,因此无法完成。您可以重新考虑流程,也可以输入0 done。我仍然被卡住了。有人提到我应该执行包含input.hasNextInt的if循环,但它一直失败。谢谢您的时间。谢谢,但当我这样做时,程序将运行:开始事务处理。>>四个四角五分。然后,下一行是空白的,我可以输入完成,但我需要它采取尽可能多的存款作为用户想要的。然后,当准备就绪时,他们所要做的就是键入“done”。
coinNumber = input.nextInt();
input.nextLine();
deposit = input.nextLine();