在BankMenu方法中查找错误

时间:2012-04-04 14:50:59

标签: java

方法bankTellerMenu()旨在显示银行出纳员菜单并重复获取用户的选择并执行该选择。如果用户做出无效选择,则仅重新显示菜单。该方法中存在语法和逻辑错误。如果这些错误得到纠正,那么实际输出将与下面显示的相匹配。 更正代码并通过生成下面的输出来测试它。我强调了用户的反应,使其脱颖而出。

-------------------------预期输出-------------------- ------

FIT Bank

  1. 存款
  2. 退出
  3. 客户端菜单
  4. 帐户菜单
  5. 退出
  6. 选择一个选项(1-5): 7

    FIT Bank

    1. 存款
    2. 退出
    3. 客户端菜单
    4. 帐户菜单
    5. 退出
    6. 选项必须只有1-5

      选择一个选项(1-5): 2

      * 调用withdraw()

      选择其他选项(1-5): 5

      -------------------------预期输出-------------------- ------

      现在问题就开始了,我已经尝试过对方法进行编码,但是当我输入一个介于1之间的值时,它似乎无法调用withdraw()或任何其他选择5.有人可以帮忙吗?

      import java.util.*;
      
      public class FITBank
      {
          //There are no errors in the main method.
          public static void main(String[] args)
          {
              //Just run bank teller menu.
              bankTellerMenu();
          }
      
      
      public static void bankTellerMenu()
      {
          Scanner reader = new Scanner(System.in);
          int option = 1;                
          String message = null;
      
          do{
                  System.out.println("\n\tFIT Bank");
                  System.out.println("1. Deposit");
                  System.out.println("2. Withdraw");
                  System.out.println("3. Client Menu");
                  System.out.println("4. Account Menu");
                  System.out.println("5. Exit");
                  if(message!=null){
                  System.out.println("\t"+message);
                  }
                  System.out.print("Select an option (1-5): ");
                  option = reader.nextInt();
      
              if(option < 1 || option > 5){
                      message = new String("Option must be only 1-5");
                      option=1;
                  }
      
              }while(option <1 && option > 5);
      
      
      
          if(option == 1) {
      
              System.out.println("***\tInvoke deposit()");
      
              }
      
                  if(option == 2){
                      System.out.println("***\tInvoke withdraw()");
      
                  }
      
                      if(option == 3)
                      {   System.out.println("***\tInvoke clientMenu()");
      
                  }
      
      
                      if(option==4){
                          System.out.println("***\tInvoke accountMenu()");
      
                      }
      
      
          }
      }
      

2 个答案:

答案 0 :(得分:0)

您正在提前关闭循环。之前移动所有if(option == ...)语句 }while(option >=1 && option < 5);。否则,这将无法按预期工作。

另外,我建议使用switch语句而不是所有if语句。

答案 1 :(得分:0)

首先:你熟悉the switch statement吗?如果你不是,那么我认为这将是一个了解它的最佳时机。

  

现在问题就开始了,我已经尝试过对方法进行编码,但是当我输入1到5之间的值时,它似乎无法调用withdraw()或任何其他选择。

不做功课:如果要调用withdraw方法,则必须使用withdraw方法进行调用。那么你的withdraw方法在哪里?或者你是否应该打印你正在调用withdraw方法而不实际调用它?