初学者Java(循环) – 缺少返回语句
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是无法访问的……你们中的任何人都可以帮助我,为什么这可能不起作用? 谢谢!!
return
语句位于while
循环内部和if
条件段之外,因此代码在第一次迭代时打破了循环。
可能的解决方案:将return
移到外面
while (in.hasNext()) { if (command.equals("penny")) { balance = balance + 0.01; System.out.println("balance = " + balance); } } return balance;
你的方法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
语句必须是方法的某个执行分支中的最后一个语句。
那是因为编译器不能保证return语句会执行,因为它在你的循环中。 它必须假设in.hasNext()
可能返回false并且从不命中该返回。
您将收到“Missing return statement”错误,因为您的while
循环可能永远不会被执行。 这导致程序到达函数的末尾而不返回。
while (in.hasNext()) { if (command.equals("penny")) { balance = balance + 0.01; System.out.println("balance = " + balance); } return balance; }
如果我们假装从来没有任何行,那么程序会传递while
,因此return
导致此问题。 对于您的情况,您可能只有一个默认的返回值,如return 0;
或者你想要处理这种情况。