2013-05-06 6 views
0

Dans le code suivant, la méthode de dépôt ou de retrait ou de dépôt ou de transfert n'est pas exécutée complètement lorsqu'elle est appelée depuis la méthode principale. Je suis un apprenant basique de Java et c'est l'un de mes premiers programmes. Pouvez-vous s'il vous plaît m'aider avec la même chose?méthode appelée de l'extérieur méthode principale non exécutée

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 !! Indentez ce code ... dès que possible! – codeMan

+0

S'il vous plaît dites-nous quel est votre problème réel. –

+3

@codeMan Si vous pensez que l'indentation du code le rendrait plus lisible/améliore la question, vous pouvez le faire vous-même en utilisant le lien 'edit' sur la question. –

Répondre

1

Je suppose que votre problème est que le code lance une exception quelque part et que ce n'est que partiellement en cours d'exécution. Essayez (sans jeu de mots) mettre un bloc catch try autour de votre code:

public static main(String args[]) { 

    try { 

     // you existing code goes here 

    } catch (Throwable t) { 

     System.out.println(t); 

    } 

} 

Cela permettra au moins vous dire quel est le problème.

+0

upvote pour le jeu de mots seul. Bien fait monsieur. –

+0

Le code échoue lors de la comparaison et ignore un brunch attendu. Aucune exception levée. – Igor

+0

J'ai essayé d'ajouter try catch, mais il revient toujours au menu en choisissant le dépôt ou l'équilibre ou toute autre option. Sans exécuter complètement la méthode, les choix de menu sont affichés à nouveau – user2355223

2

Le problème est que vous avez deux constructeurs et lorsque vous appelez "new Bank", le constructeur vide est appelé. Copiez les affectations du premier constructeur dans le second ou appelez simplement le bon constructeur à partir du constructeur vide.


Edit:

Vous avez ceci:

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) { 
} 

Et vous devriez avoir (au moins) ceci:

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

Je suis désolé. Je ne comprends pas ce que tu dis. N'ai-je pas un seul constructeur? – user2355223

+0

Regardez ce code: ---- private Bank (Nom de la chaîne, Chaîne no, int accno, int accno1, int bal, int amp, int a, int tra, int acc, int bal1, int bala, int acct2 , int ac1) { } ---- On l'appelle le constructeur privé. Et il est appelé par votre méthode principale. Et il ne fait rien, alors qu'il est censé faire la même chose qu'un autre constructeur de la Banque (juste au-dessus du privé). – Igor

+0

merci beaucoup .... j'ai enlevé le deuxième constructeur inutilisé et maintenant cela fonctionne parfaitement. – user2355223

Questions connexes