Switch Statement прекращает компиляцию после определенного выбора

Я написал программу для банкомата, но, похоже, у меня проблемы с методом mainMenuOptions(). Кажется, все мои операторы switch работают нормально и возвращаются назад для ввода идентификатора пользователя и выбора того, что вы хотели бы сделать с банкоматом. Однако, когда пользователь попадает в случай 4, все печатается так, как и должно быть, но меню никогда не возвращается, поэтому вы можете двигаться дальше. Если вы введете любое число после выхода из случая 4, вы просто получите сообщение BUILD SUCCESSFUL, и вам необходимо перезапустить программу.

Мне нужен четвертый случай, чтобы он функционировал так же, как и случаи 1, 2, 3 и 5. Мне нужно, чтобы он был выбран и выдал вывод ниже, и продолжил программу.

Ожидаемый выход

Главное меню

  1. Проверить баланс

  2. Изымать

  3. депозит

  4. Информация об учетной записи

  5. Выход (выберите другой аккаунт)

Пожалуйста, сделайте выбор: 4

Аккаунт был создан: Вторник, 23 октября 19:27:22 ПО ВОСТОЧНОМУ ВРЕМЕНИ 2018

Процентная ставка по счету составляет: 0,65

Баланс счета: 44.0

Главное меню

  1. Проверить баланс

  2. Изымать

  3. депозит

  4. Информация об учетной записи

  5. Выход (выберите другой аккаунт)

Фактический выход

Главное меню

  1. Проверить баланс

  2. Изымать

  3. депозит

  4. Информация об учетной записи

  5. Выход (выберите другой аккаунт)

Пожалуйста, сделайте выбор: 4

Аккаунт был создан: Вторник, 23 октября 19:27:22 ПО ВОСТОЧНОМУ ВРЕМЕНИ 2018

Процентная ставка по счету составляет: 0,65

Баланс счета: 44.0

СТРОИТЬ УСПЕШНО

Мой код ниже.....

import java.util.Date;
import java.util.Scanner;



public class test {

    private static Account[] accounts = new Account[10];

    public static void main(String[] args) {



        accounts();
        mainMenuOptions();
    }
    //main menu option method
    public static void mainMenuOptions() {
        Scanner input = new Scanner(System.in);

        Date d = new Date();

        int enterchoice = -1;
        int id=-1;
        while (enterchoice != 4) {
            mainMenu();
            //enter id
            System.out.println("Enter an id: ");
            id = input.nextInt();
            System.out.println("Enter choice: ");
            enterchoice = input.nextInt();

            int index = -1;
            for (int i = 0; i < accounts.length; i++) {
                if (accounts[i].getid() == id) {
                    index = i;
                    break;
                }
            }
            switch (enterchoice) {
            case 1:
                System.out.println("The balance is " + accounts[index].getbalance());
                break;
            case 2:
                {
                    System.out.println("Enter an amount to withdraw ");
                    double amount = input.nextDouble();
                    //withdraw method
                    accounts[index].withdraw(amount);
                    break;
                }
            case 3:
                {
                    System.out.println("Enter an amount to deposit ");
                    double amount = input.nextDouble();
                    //deposit method
                    accounts[index].deposit(amount);
                    break;
                }
            case 4:
                {
                    System.out.println("Account was created on: " + d.toString());
                    System.out.println("Account interest rate is: " + accounts[index].getMonthlyInterestRate());
                    System.out.println("Account balance is: $" + accounts[index].getbalance());
                    double amount = input.nextDouble();
                    //display date account created, account interest rate, and balance
                    accounts[index].deposit(amount);
                    break;
                }
            case 5:
                {
                    System.out.println("Exit (choose a different account)");
                    double amount = input.nextDouble();
                    //loop back through program to make new account selection
                    break;
                }
            default:
                break;
            }
        }
    }

    public static void accounts() {
        //create accounts
        //initialize 100 dollars
        for (int i = 0; i < accounts.length; i++) {
            accounts[i] = new Account(i, 100);
        }
    }

    //main menu method
    public static void mainMenu() {

        System.out.println("Main menu" + "\nEnter a choice" + "\n1:Check Balance" + "\n2:Withdraw" + "\n3:Deposit" + "\n4:Account Information" + "\n5:Exit (choose a different account)");

    }

    //main menu method
    public static void mainMenus() {
        System.out.println("Main menu" + "\nEnter a choice" + "\n1:Check Balance" + "\n2:Withdraw" + "\n3:Deposit" + "\n4:Account Information" + "\n5:Exit (choose a different account)");

    }

    private String dateCreated;
}
class Account{
    private int id = 0;
    private double balance = 0;
    private static double annualInterestRate = 7.8;
    private final double withdraw;
    private final double deposit;
    private final double amount;
    private java.util.Date dateCreated;
    private Object getMonthlyInterestRate;

    Account(){
        this.amount = 0;
        this.withdraw = 0;
        this.deposit = 0;
        this.dateCreated.toString();
        this.getMonthlyInterestRate.toString(); 

    }


    Account(int id, double balance){
        this.amount = 0;
        this.withdraw = 0;
        this.deposit = 0;
        this.id = id;
        this.balance = balance;
    }

    public int getid(){
        return this.id;

    }
    public void setid(int newid){
        id = newid;
    }
    public double getbalance(){
        return this.balance;
    }
    public double getMonthlyInterestRate() {
        return (annualInterestRate / 12);
    }

    public double getMonthlyInterest() {
        return balance * getMonthlyInterestRate();
    }

    public void withdraw(double amount){
        balance = balance - amount;
    }

    public void deposit(double amount){
        balance = balance + amount;
    }


}

1 ответ

Я обнаружил, что если я поменяю цикл while (enterchoice != 4) в while (enterchoice < 6) мой код работает так, как мне нужно.

Другие вопросы по тегам