2013-05-06 63 views
0

在下面的代码中,从main方法调用时,存入方法或withdraww或存入或转移未完全执行。我是一个基本的Java学习者,这是我的第一个程序。你能帮我一样吗?从外部主方法调用的方法未执行

import java.io.BufferedReader; 
import java.io.InputStreamReader; 
import java.util.*; 

public class Bank { 

    static Scanner input = new Scanner(System.in); 
    static String name, no; 
    static int accNo, accNo1, bal, amt, a, tra, acct, bal1, bala, acct2, ac1; 

    Bank(String name, String no, int accNo, int accNo1, int bal, int bal1, int ac1) { 
     this.name = name; 
     this.no = no; 
     this.accNo = accNo; 
     this.bal = bal; 
    } 

    private Bank(String name, String no, int accNo, int accNo1, int bal, int amt, int a, int tra, int acct, int bal1, int bala, int acct2, int ac1) { 
    } 

    static void deposit() { 
     System.out.println("Enter the account to which amount is to be deposited"); 
     Scanner ac = new Scanner(System.in); 
     int ac1 = ac.nextInt(); 

     System.out.println("Enter amount to deposit: (Enter in Multiples of Rs.500)"); 
     amt = input.nextInt(); 

     if (ac1 == accNo) { 
      bal = bal + amt; 
      System.out.println("Acct no:" + accNo); 
      System.out.println("Balance:Rs. " + bal); 
     } else if (ac1 == accNo1) { 
      bal1 = bal1 + amt; 
      System.out.println("Acct no:" + accNo1); 
      System.out.println("Balance:Rs. " + bal1); 
     } else if ((acct2 != accNo) || (acct2 != accNo1)) { 
      System.out.println("Account no not registered"); 
     } 
    } 

    static void withdraw() { 
     System.out.println("Enter the account from which amount is to be withdrawn"); 
     Scanner ac3 = new Scanner(System.in); 
     int ac2 = ac3.nextInt(); 
     if (ac2 == accNo) { 
      System.out.println("Enter amount to withdraw"); 
      amt = input.nextInt(); 
      bal = bal - amt; 
      System.out.println("Acct no:" + accNo); 
      System.out.println("Balance:Rs. " + bal); 
     } else if (ac2 == accNo1) { 
      System.out.println("Enter amount to withdraw"); 
      amt = input.nextInt(); 
      bal1 = bal1 - amt; 
      System.out.println("Acct no:" + accNo1); 
      System.out.println("Balance:Rs. " + bal1); 
     } else { 
      if ((acct2 != accNo) || (acct2 != accNo1)) { 
       System.out.println("Account no not registered"); 
      } 
     } 
    } 

    static void display() { 

     System.out.println("Enter the account number for balance:"); 
     bala = input.nextInt(); 
     if (bala == accNo) { 
      System.out.println("Account No:" + accNo); 
      System.out.println("The balance in the account is Rs." + bal); 

     } else if (bala == accNo1) { 
      System.out.println("Account No:" + accNo1); 
      System.out.println("The balance in the account is Rs." + bal1); 

     } 
     if ((acct2 != accNo) || (acct2 != accNo1)) { 
      System.out.println("Account number not registered!!"); 
     } 
    } 

    static void transfer() { 

     System.out.println("Enter the account number to which amount is to be transferred:"); 
     acct2 = input.nextInt(); 
     if (acct2 == accNo) { 
      System.out.println("Enter the amount to be transferred:"); 
      tra = input.nextInt(); 
      if (bal < tra - 500) { 
       System.out.println("Insufficient funds. Minimum balance to be maintained in your account is Rs.500"); 
      } else { 
       bal = bal - tra; 
       bal1 = bal1 + tra; 
      } 
     } else if (acct2 == accNo1) { 
      if (bal1 < tra - 500) { 
       System.out.println("Insufficient funds. Minimum balance to be maintained in your account is Rs.500"); 
      } else { 
       bal1 = bal1 - tra; 
       bal = bal + tra; 
      } 

     } else { 
      if ((acct2 != accNo) || (acct2 != accNo1)) { 
       System.out.println("Account No not registered !!"); 
      } 
     } 
    } 

    public static void main(String args[]) { 

     System.out.println("Welcome to personal account netbanking!"); 
     System.out.println("To become a registered user of netbanking, kindly enter the following details"); 
     System.out.println("Please enter your Full Name: "); 
     String name = input.nextLine(); 
     System.out.println("Please enter your Contact Number:"); 
     Scanner no1 = new Scanner(System.in); 
     String no = no1.nextLine(); 
     System.out.println("Please enter the first Account Number "); 
     Scanner acc1 = new Scanner(System.in); 
     int accNo = acc1.nextInt(); 
     System.out.println("Please enter the second Account Number "); 
     Scanner acc2 = new Scanner(System.in); 
     int accNo1 = acc1.nextInt(); 
     System.out.println("Please enter the Amount to be deposited in the fist account"); 
     Scanner amt1 = new Scanner(System.in); 
     int bal = amt1.nextInt(); 
     System.out.println("Please enter the Amount to be deposited in the second account"); 
     Scanner amt2 = new Scanner(System.in); 
     int bal1 = amt2.nextInt(); 
     System.out.println("Thank you for registering"); 
     System.out.println("Kindly make a note of your username: 'admin' and password: 'admin'"); 
     System.out.println("Please enter the user name: "); 
     String u = input.nextLine(); 
     System.out.println("Please enter the password: "); 
     BufferedReader p = new BufferedReader(new InputStreamReader(System.in)); 
     String y = input.nextLine(); 
     Bank b1 = new Bank(name, no, accNo, accNo1, bal, amt, a, tra, acct, bal1, bala, acct2, ac1); 
     if ("admin".equals(u) && "admin".equals(y)) { 


      int menu; 
      System.out.println(" Welcome " + name); 
      boolean quit = false; 
      do { 

       System.out.println("Please enter your choice: "); 
       System.out.println("1. Balance Enquiry"); 
       System.out.println("2. Deposit Amount"); 
       System.out.println("3. Withdraw Amount "); 
       System.out.println("4. Transfer Amount"); 
       System.out.println("5. Exit"); 
       menu = input.nextInt(); 

       switch (menu) { 
        case 1: 
         b1.display(); 
         break; 

        case 2: 
         b1.deposit(); 
         break; 

        case 3: 
         b1.withdraw(); 
         break; 
        case 4: 
         b1.transfer(); 
         break; 

        case 5: 
         quit = true; 
         break; 
       } 
      } while (!quit); 
     } else { 
      System.out.println("Invalid username or password"); 
     } 
    } 
} 
+4

OMG!缩进此代码...尽快! – codeMan 2013-05-06 16:34:34

+0

请告诉我们你的实际问题是什么。 – 2013-05-06 16:37:04

+3

@codeMan如果您认为缩进代码会使其更具可读性/改善问题,您可以使用问题上的“编辑”链接自行完成。 – 2013-05-06 16:37:53

回答

1

我猜你的问题是,代码抛出一个异常的地方,这只是部分运行。尝试(没有双关语意图)围绕您的代码放一个try catch块:

public static main(String args[]) { 

    try { 

     // you existing code goes here 

    } catch (Throwable t) { 

     System.out.println(t); 

    } 

} 

这将至少告诉你什么是问题。

+0

upvote for the play on words alone。先生,干得好。 – 2013-05-06 16:41:08

+0

比较代码失败,并跳过预期的早午餐。抛出异常。 – Igor 2013-05-06 16:48:19

+0

我尝试添加try catch,但它仍然返回到选择存款或余额或任何其他选项的菜单。如果不完全执行该方法,则会再次显示菜单选项 – user2355223 2013-05-09 15:23:18

2

问题是你有两个构造函数,当你调用“new Bank”时,会调用空构造函数。将第一个构造函数的赋值复制到第二个构造函数中,或者从空的构造函数中调用它。


编辑:

你有这样的:

Bank(String name, String no, int accNo, int accNo1, int bal, int bal1, int ac1) { 
    this.name = name; 
    this.no = no; 
    this.accNo = accNo; 
    this.bal = bal; 
} 

private Bank(String name, String no, int accNo, int accNo1, int bal, int amt, int a, int tra, int acct, int bal1, int bala, int acct2, int ac1) { 
} 

而且你应该有(至少)这样的:

Bank(String name, String no, int accNo, int accNo1, int bal, int bal1, int ac1) { 
    this.name = name; 
    this.no = no; 
    this.accNo = accNo; 
    this.bal = bal; 
} 

private Bank(String name, String no, int accNo, int accNo1, int bal, int amt, int a, int tra, int acct, int bal1, int bala, int acct2, int ac1) { 
    this.name = name; 
    this.no = no; 
    this.accNo = accNo; 
    this.bal = bal; 
} 
+0

对不起。我不懂你在说什么。我不只有一个构造函数吗? – user2355223 2013-05-09 15:22:00

+0

看这段代码: ---- private Bank(String name,String no,int accNo,int accNo1,int bal,int amt,int a,int tra,int acct,int bal1,int bala,int acct2 ,int ac1){ } ---- 它被称为私有构造函数。它正在被你的主要方法调用。它什么都不做,而它应该和另一个Bank构造函数一样(只是在私有之上)。 – Igor 2013-05-09 16:36:33

+0

非常感谢....我删除了未使用的第二个构造函数,现在它完美地工作。 – user2355223 2013-05-10 11:37:57