Float不能被解除引用

时间:2015-08-18 02:48:05

标签: java

    class Bank{
    private float transferFrom;
    private float transferTo;

    public Bank(float transferFrom, float transferTo){
        this.transferFrom = transferFrom;
        this.transferTo = transferTo;
        BankAccount[] a = new BankAccount[4];
        for(int i = 0; i < a.length; i++){
            a[i] = new BankAccount(i);
        }
    }

    public void transfer(float amount){
        if(transferFrom.getBalance() > amount){
            transferFrom.widraw(amount);
            transferTo.deposit(amount);
        }
            throw new RuntimeException("Transfer could not be done.");
    }

}

我不知道为什么我会收到此错误。我在java和所有地方都很陌生我检查答案是我所知道的更先进的答案。你可以帮帮我吗?谢谢。

2 个答案:

答案 0 :(得分:1)

{mydll.dll.config}transferTotransferFrom个变量。 floatprimitive type,您无法调用基本类型的方法。

您在哪里宣布floatgetBalance()widraw()方法?您应该在该类型的对象的实例上调用它们。

这只是一个疯狂的猜测,但它们可能在deposit()?然后,您需要在BankAccount对象实例上调用这些方法,即:。

BankAccount

这只是一个例子。

@Edit:同样要小心,如果你没有将private BankAccount transferFrom = new BankAccount(10); private BankAccount transferTo = new BankAccount(10); public void transfer(float amount){ if(transferFrom.getBalance() > amount){ transferFrom.widraw(amount); transferTo.deposit(amount); } else { throw new RuntimeException("Transfer could not be done."); } } 块放在transfer()块内,你的RuntimeException方法总会得到else。在Java方法中,如果遇到并完成if块,则不会自动返回。另外,请不要抛出RuntimeExceptions,创建自己的,更有意义的例外。

答案 1 :(得分:0)

这是如何编译的? (它编译了吗?)

transferFrom.widraw(amount);
transferTo.deposit(amount);

float是一个原语,不包含这些方法。