我试图完成所有日食快速修复,但由于某种原因它仍然存在 当我尝试使用我的测试文件夹
编译它时,会给我一条错误消息它一直告诉我“Syntax error on token "InsufficientFundsException", VariableDeclaratorId expected after this
”
并且我不知道这意味着什么,所有我需要做的例外是测试我的余额是否为负,如果是负的则吐出多少我的空白。
public class BankAccount
{
// Variables that are private so there is no recounts
private static int nextID = 100;
private static int newID() { return nextID++; }
// Instance variables
private double balance;
private int id;
// Constructors
public BankAccount()
{
this(0);
}
public BankAccount(int initBal)
{
balance = initBal;
id = newID();
}
// Instance (non-static) methods
public double getBalance()
{
return balance;
}
public int getAccountNumber()
{
return id;
}
public double getAmount()
{
return testAmount;
}
public void deposit (double depositAmount)
{
balance += depositAmount;
}
public void withdraw(double amount) throws InsufficientFundsException
{
balance -= amount;
double difference;
if (balance < balance-amount)
difference = amount - balance;
throw new InsufficientFundsException();
try
{
double nbalance = (balance - amount);
}
catch (InsufficientFundsException)
{
System.out.println("You do not have enough for this transaction , you are short by " + difference);
}
}
}
public class InsufficientFundsException extends Exception
{
public InsufficientFundsException() throws InsufficientFundsException
{
throw new InsufficientFundsException();
}
public double getAmount()
{
return getAmount();
}
}
答案 0 :(得分:1)
之后的代码
throw new InsufficientFundsException();
是死代码。
其他代码也是错误的
E.g。
InsufficientFundsException
构造函数抛出自己。
catch (InsufficientFundsException)
错了。它需要一个变量。
double nbalance = (balance - amount);
永远不会抛出InsufficientFundsException
例外。
getAmount()
只是递归调用自身而没有逻辑。
答案 1 :(得分:0)
你需要
catch (InsufficientFundsException e)
{
注意e。您需要一个变量来“存储”异常。
之后还有一些问题需要解决。抛出异常时,它会实例化并反复抛出它。
答案 2 :(得分:0)
复制回答评论(Sotirios Delimanolis)。在catch()
中提供变量名 catch (InsufficientFundsException someE)
{
System.out.println("You do not have enough for this transaction , you are short by " + difference);
}
答案 3 :(得分:0)
我没有直接回答所问的问题(Jayan,DeadChex和Sotirios Delimanolis已经做过),我会指出你有大量无意义的代码。例如,InsufficientFundsException
类的两个成员都不做任何事情,只能无条件地自称。如果编译器甚至接受了它,那么一旦你尝试调用它就会导致程序崩溃。此外,异常构造函数看起来与任何其他构造函数完全相同。异常类应如下所示:
public class InsufficientFundsException extends Exception {
double amount;
public InsufficientFundsException(double amount) {
super();
this.amount = amount;
}
public double getAmount() {
return amount;
}
}
先前的答案似乎错过了一件事:catch
语句只能捕获从相应的try
块中抛出的异常,并且您不需要使用{{1如果捕获到异常,则返回子句。您还有一些逻辑错误,这意味着throws
方法无论如何都不会按照您的意思执行。要使它工作,它需要看起来像这样:
withdraw
当然,你根本不应该使用例外。这是做同样事情的更好方法:
public void withdraw(double amount) {
try {
if(amount > balance) throw new InsufficientFundsException(amount - balance);
balance -= amount;
} catch(InsufficientFundsException e) {
System.out.println("You do not have enough for this transaction, you are short by $" + e.getAmount());
}
}