我的程序有问题,我不知道为什么对象的名称和ID没有显示在输出中,而且chkBalance()
方法中没有使用余额为什么? ?我认为构造函数的问题呢? ...我从这段代码得到的输出是......:
Customer Name Customer ID Balance
null 0.0 200
null 0.0 200
null 0.0 200
public class BankAccount {
private int Balance;
public String AccHolder_Name;
public double AccHolder_ID;
public BankAccount(String Name ,double ID,int Balance) {
Name = AccHolder_Name;
ID = AccHolder_ID;
}
public void withDraw(int a) {
Balance=a-Balance;
}
public void deposit(int b) {
Balance=b+Balance;
}
public int chkBalance(){
deposit(500);
withDraw(700);
return Balance;
}
public void Display () {
System.out.println(AccHolder_Name+"\t\t"+AccHolder_ID+"\t\t"+Balance);
}
public static void main (String args []) {
BankAccount o1=new BankAccount("Aos" , 1101558733 ,3000);
BankAccount o2=new BankAccount("Ahmed" , 1101978733,5000);
BankAccount o3=new BankAccount("Ali",1111650924,7000);
System.out.println("Customer Name\tCustomer ID\tBalance");
o1.chkBalance();
o2.chkBalance();
o3.chkBalance();
o1.Display();
o2.Display();
o3.Display();
}
}
答案 0 :(得分:4)
在您的构造函数中,您将null
分配给给定参数,并且永远不会分配Balance
public BankAccount(String Name ,double ID,int Balance) {
Name = AccHolder_Name; // Will assign @AccHolder_Name to @Name
ID = AccHolder_ID;
}
因此,您应该撤消此分配并使用给定参数设置Balance
字段:
public BankAccount(String Name ,double ID,int Balance) {
AccHolder_Name = Name; // Will assign @Name to @AccHolder_Name
AccHolder_ID = ID;
this.Balance = Balance;
}
关于你的变量名,你应该看看naming convention。 这些变量应该使用骆驼的情况,并且良好的实践可以很好地代表它们的功能。
因此,AccHolder_Name
应为accHolderName
。
答案 1 :(得分:2)
BankAccount的构造函数确实是错误的。因为' ='操作的作用是将右变量的值赋给左变量,并且代码反转。 另一个问题是你没有在构造函数中初始化你的Balance,然后编译器会将它初始化为0。
答案 2 :(得分:2)
你在构造函数中的赋值是错误的方式。此外,您忘记分配Balance参数,这会导致Balance默认为0
,并在计算后生成200
。
public BankAccount(String Name, double ID, int Balance) {
this.AccHolder_Name = Name;
this.AccHolder_ID = ID;
this.Balance = Balance;
}
关于naming conventions的一个重要说明:Java中的变量使用camel case。除非将变量名称视为缩写标准,否则也不鼓励使用变量名称。结果代码将是:
public BankAccount(String name, double id, int balance) {
this.accountHolderName = name;
this.accountHolderId = id;
this.balance = balance;
}
答案 3 :(得分:1)
构造函数有问题。复制下面的代码并替换你的构造函数并检查。
public BankAccount(String Name ,double ID,int Balance) {
this.AccHolder_Name = Name;
this.AccHolder_ID = ID;
this.Balance = Balance;
}
我的建议是更多地学习java。您可以从Java Tutorial学习基础知识。
答案 4 :(得分:0)
在构造函数中,您以其他方式分配它。将其分配如下
public BankAccount(String Name ,double ID,int Balance) {
this.AccHolder_Name = Name;
this.AccHolder_ID = ID;
this.Balance = Balance;
}
您想要在左侧设置变量,在rigt侧设置值。如果您想将String AccHolder_Name设置为您在构造函数中提供的Name,则必须以相反的方式执行此操作。
答案 5 :(得分:0)
有几个错误:
一个。您的构造函数不正确,不保存提供的 变量
this.AccHolder_Name =姓名; this.AccHolder_ID = ID; this.Balance =余额;
湾您的提款方式不正确。它应该是(平衡= 平衡-a)的
请参阅下面的正确代码。
public class BankAccount {
private int Balance ;
public String AccHolder_Name;
public double AccHolder_ID;
public BankAccount(String Name ,double ID,int Balance) {
this.AccHolder_Name=Name ;
this.AccHolder_ID=ID;
this.Balance=Balance;
}
public void withDraw(int a) {
Balance=Balance-a;
}
public void deposit(int b) {
Balance=b+Balance;
}
public int chkBalance(){
deposit(500);
withDraw(700);
return Balance;
}
public void Display () {
System.out.println(AccHolder_Name+"\t\t"+AccHolder_ID+"\t\t"+Balance);
}
public static void main (String args []) {
BankAccount o1=new BankAccount("Aos" , 1101558733 ,3000);
BankAccount o2=new BankAccount("Ahmed" , 1101978733,5000);
BankAccount o3=new BankAccount("Ali",1111650924,7000);
System.out.println("Customer Name\tCustomer ID\tBalance");
o1.chkBalance();
o2.chkBalance();
o3.chkBalance();
o1.Display();
o2.Display();
o3.Display();
}
}