设置数组值 = 0 并缺少 return 语句
Setting an array value = 0 and missing return statement
我有一个 class 银行账户
public class BankAccount {
private double balance;
public BankAccount() {
balance = 0;
}
public BankAccount(double initialBalance) {
balance = initialBalance;
}
public void deposit(double amount) {
balance = balance + amount;
}
public void withdraw(double amount) {
balance = balance - amount;
}
public double getBalance() {
return balance;
}
}
我在 class BankAccountGroup
中也有一个 classes 数组
public class BankAccountGroup {
private BankAccount[] bankAccounts;
public BankAccountGroup(BankAccount[] bankAccounts) {
this.bankAccounts = bankAccounts;
}
public double getBalance(int i) throws NullPointerException {
return bankAccounts[i].getBalance();
}
public double removeAccount(int i) throws NullPointerException {
if(bankAccounts[i] != null) {
return bankAccounts[i].getBalance();
bankAccounts[i] = null;
}
else {
return 0;
}
}
}
在方法 public double removeAccount(int i)
中,如果第 i 个帐户不为空,我想 return 余额,然后在索引 i 处的数组元素中将该索引设置为 null 为 null .如果该元素已经为空,return 0.
然后我收到错误
D:\CS 140>javac assignment03\BankAccountGroup.java
assignment03\BankAccountGroup.java:17: error: unreachable statement
bankAccounts[i] = null;
^
assignment03\BankAccountGroup.java:23: error: missing return statement
}
^
我知道 unreachable statement 错误对编译器来说基本上是无意义的代码,但我不明白为什么。至于 no return 语句,显然在该方法可以采用的两个路径中都有 return 语句。我唯一的想法是 removeAccount 中的 if 中的两行应该切换,但是我不能将第 i 个元素设置为 null。
此代码是伪造的:
if(bankAccounts[i] != null) {
return bankAccounts[i].getBalance();
bankAccounts[i] = null;
}
return之后的语句不会被执行。想办法保留return的结果,把指针设为null,然后return。您将需要一个辅助变量。
一旦您从方法中 return,就没有必要执行下一行代码了。这就是您看到该异常的原因。在 return 之后将其设为 null 没有多大意义。
你可以这样做
if(bankAccounts[i] != null) {
double balance = bankAccounts[i].getBalance();
bankAccounts[i] = null;
return balance;
}
您不能将业务代码放在 "return" 语句之后,因为它永远不会到达...当您 "return" 您从方法中 "exit" 时。
试试这个:
public double removeAccount(int i) throws NullPointerException {
if(bankAccounts[i] != null) {
double result = bankAccounts[i].getBalance();
bankAccounts[i] = null;
return result;
}
else {
return 0;
}
}
我有一个 class 银行账户
public class BankAccount {
private double balance;
public BankAccount() {
balance = 0;
}
public BankAccount(double initialBalance) {
balance = initialBalance;
}
public void deposit(double amount) {
balance = balance + amount;
}
public void withdraw(double amount) {
balance = balance - amount;
}
public double getBalance() {
return balance;
}
}
我在 class BankAccountGroup
中也有一个 classes 数组public class BankAccountGroup {
private BankAccount[] bankAccounts;
public BankAccountGroup(BankAccount[] bankAccounts) {
this.bankAccounts = bankAccounts;
}
public double getBalance(int i) throws NullPointerException {
return bankAccounts[i].getBalance();
}
public double removeAccount(int i) throws NullPointerException {
if(bankAccounts[i] != null) {
return bankAccounts[i].getBalance();
bankAccounts[i] = null;
}
else {
return 0;
}
}
}
在方法 public double removeAccount(int i)
中,如果第 i 个帐户不为空,我想 return 余额,然后在索引 i 处的数组元素中将该索引设置为 null 为 null .如果该元素已经为空,return 0.
然后我收到错误
D:\CS 140>javac assignment03\BankAccountGroup.java
assignment03\BankAccountGroup.java:17: error: unreachable statement
bankAccounts[i] = null;
^
assignment03\BankAccountGroup.java:23: error: missing return statement
}
^
我知道 unreachable statement 错误对编译器来说基本上是无意义的代码,但我不明白为什么。至于 no return 语句,显然在该方法可以采用的两个路径中都有 return 语句。我唯一的想法是 removeAccount 中的 if 中的两行应该切换,但是我不能将第 i 个元素设置为 null。
此代码是伪造的:
if(bankAccounts[i] != null) {
return bankAccounts[i].getBalance();
bankAccounts[i] = null;
}
return之后的语句不会被执行。想办法保留return的结果,把指针设为null,然后return。您将需要一个辅助变量。
一旦您从方法中 return,就没有必要执行下一行代码了。这就是您看到该异常的原因。在 return 之后将其设为 null 没有多大意义。
你可以这样做
if(bankAccounts[i] != null) {
double balance = bankAccounts[i].getBalance();
bankAccounts[i] = null;
return balance;
}
您不能将业务代码放在 "return" 语句之后,因为它永远不会到达...当您 "return" 您从方法中 "exit" 时。
试试这个:
public double removeAccount(int i) throws NullPointerException {
if(bankAccounts[i] != null) {
double result = bankAccounts[i].getBalance();
bankAccounts[i] = null;
return result;
}
else {
return 0;
}
}