import java.util.Scanner;
public class Vending {
public double vend(double balance) {
Scanner in = new Scanner(System.in);
balance = 0;
System.out.print("Enter a command = ");
String command = in.nextLine();
while (in.hasNext()) {
if (command.equals("penny")) {
balance = balance + 0.01;
System.out.println("balance = " + balance);
}
return balance;
}
}
}
嗨!我已经尝试了一切来弄清楚为什么不能识别return语句。如果我把“返回余额”放在其他任何地方,它说system.out.println是无法访问的......你们中的任何人都可以帮助我,为什么这可能不起作用?谢谢!!
答案 0 :(得分:3)
return
语句位于while
循环内部和if
条件段之外,因此代码在第一次迭代时打破了循环。
可能的解决方案:将return
移到while
while (in.hasNext()) {
if (command.equals("penny")) {
balance = balance + 0.01;
System.out.println("balance = " + balance);
}
}
return balance;
答案 1 :(得分:1)
您的方法vend(double balance)
定义为返回double
。无论方法中发生什么,它都必须返回一个双精度数。现在你在这里有一个return语句:
while (in.hasNext()) {
if (command.equals("penny")) {
balance = balance + 0.01;
System.out.println("balance = " + balance);
}
return balance;
}
但是如果你的陈述in.hasNext()
返回false
会怎样?然后永远不会到达它里面的return
。因此,编译器无法保证您的方法是有效的java,因此抱怨。
您应该在while
之外添加一个return语句。
当你说
时如果我把“退货余额”放在其他任何地方,那就说了 system.out.println无法访问
您将return语句放在System.out.println()
语句之前。当一个方法返回时,它会放弃在return
语句之后可能发生的任何事情,基本上在它无用后做任何事情。 return
语句必须是方法的某个执行分支中的最后一个语句。
答案 2 :(得分:0)
那是因为编译器不能保证return语句会执行,因为它在你的循环中。它必须假设in.hasNext()
可能返回false并且永远不会返回该返回。
答案 3 :(得分:0)
您收到“Missing return statement”错误,因为您的while
循环可能永远不会被执行。这导致程序在没有返回的情况下到达函数的末尾。
while (in.hasNext()) {
if (command.equals("penny")) {
balance = balance + 0.01;
System.out.println("balance = " + balance);
}
return balance;
}
如果我们假装in
永远不会有任何行,那么程序会传递while
,因此return
会导致此问题。对于你的情况,你可能只有一个默认的回报,如return 0;
,或者你想要处理这种情况。