我无法在java中获得正确的输出

时间:2017-11-07 11:02:28

标签: java

我的程序有问题,我不知道为什么对象的名称和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();
    }
} 

6 个答案:

答案 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();

    }
    }