从外部主方法调用的方法未执行
在下面的代码中,从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");
}
}
}
我猜你的问题是,代码抛出一个异常的地方,这只是部分运行。尝试(没有双关语意图)围绕您的代码放一个try catch块:
public static main(String args[]) {
try {
// you existing code goes here
} catch (Throwable t) {
System.out.println(t);
}
}
这将至少告诉你什么是问题。
upvote for the play on words alone。先生,干得好。 – 2013-05-06 16:41:08
比较代码失败,并跳过预期的早午餐。抛出异常。 – Igor 2013-05-06 16:48:19
我尝试添加try catch,但它仍然返回到选择存款或余额或任何其他选项的菜单。如果不完全执行该方法,则会再次显示菜单选项 – user2355223 2013-05-09 15:23:18
问题是你有两个构造函数,当你调用“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;
}
对不起。我不懂你在说什么。我不只有一个构造函数吗? – user2355223 2013-05-09 15:22:00
看这段代码: ---- 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
非常感谢....我删除了未使用的第二个构造函数,现在它完美地工作。 – user2355223 2013-05-10 11:37:57
OMG!缩进此代码...尽快! – codeMan 2013-05-06 16:34:34
请告诉我们你的实际问题是什么。 – 2013-05-06 16:37:04
@codeMan如果您认为缩进代码会使其更具可读性/改善问题,您可以使用问题上的“编辑”链接自行完成。 – 2013-05-06 16:37:53