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和所有地方都很陌生我检查答案是我所知道的更先进的答案。你可以帮帮我吗?谢谢。
答案 0 :(得分:1)
{mydll.dll.config}
和transferTo
是transferFrom
个变量。 float
是primitive type,您无法调用基本类型的方法。
您在哪里宣布float
,getBalance()
和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
是一个原语,不包含这些方法。