Switch Statement прекращает компиляцию после определенного выбора - PullRequest
0 голосов
/ 29 октября 2018

Я написал программу для банкомата, но, похоже, возникают проблемы с моим методом 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 Ответ

0 голосов
/ 29 октября 2018

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

...