我很难过,为什么这个代码在我有一个包含的时候没有返回语句。任何帮助将不胜感激!
有问题的代码:
public static int getSize()
{
Scanner kbd = new Scanner(System.in);
int x = 1;
while(x==1){
System.out.println("Enter the size (>0): ");
int n = kbd.nextInt();
if (n>0){
x--;
return n;
}
}
}
答案 0 :(得分:4)
您收到错误,因为并非所有代码路径都返回值。
在方法的末尾添加以下行:return 0;
:
public static int getSize()
{
Scanner kbd = new Scanner(System.in);
int x = 1;
while(x==1){
System.out.println("Enter the size (>0): ");
int n = kbd.nextInt();
if (n>0){
x--;
return n;
}
}
return 0; // Add this line
}
假设n <= 0
。然后永远不会调用现有的return
语句,因此该方法永远不会return
。因此,您需要向编译器确保该方法无论如何都会返回默认值,方法是添加return 0
。
答案 1 :(得分:1)
循环中有一个/* writing template name: namehere would cause wordpress to populate a dropdown */
,但编译器并不确定循环不会在没有命中该语句的情况下退出。因为它认为可能会达到函数的结尾,所以它会产生错误。
答案 2 :(得分:0)
在所有情况下,您的代码都不会到达return语句。您需要在循环外添加一个默认的return语句。
答案 3 :(得分:0)
因为您没有涵盖代码中的所有可能方式,我的意思是,如果n>0
为false,则该方法永远不会返回任何内容
试试这个
public static int getSize()
{
Scanner kbd = new Scanner(System.in);
int x = 1;
while(x==1){
System.out.println("Enter the size (>0): ");
int n = kbd.nextInt();
if (n>0){
x--;
return n;
}
}
// Bad response
return -1;
}