为什么我得到一个“缺少返回语句”,即使我在代码中有声明?

时间:2015-11-30 17:37:16

标签: java

我很难过,为什么这个代码在我有一个包含的时候没有返回语句。任何帮助将不胜感激!

有问题的代码:

   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;
         }
      }
   }

4 个答案:

答案 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;
   }