在Java中解析“该方法必须返回int类型的结果”

时间:2011-11-03 14:32:07

标签: java

我对Java很新。 Eclipse给了我错误

  

该方法必须返回int

类型的结果

代码如下:

public class firstprog {
    public static int largest(int a, int b, int c) {
        if (a > b) {
            if (a > c) {
                return a;
            } else if (b > c) {
                return b;
            } else {
                return c;
            }
        }
    }

    public static void main(String args[]) {
        int a = 7;
        int b = 8;
        int c = 9;

        System.out.println(largest(a, b, c));
    }
}

为什么会这样?

9 个答案:

答案 0 :(得分:3)

是的问题是每个文件只能有一个公共类,而且该文件的名称应该与该类相同。您可以在第一个类的定义前删除公共。 更好的方法是使它成为主类的静态方法。

要解决第二个问题,你可以这样做:

public class firstprog {


    public static int largest(int a,int b,int c) 
    {
        if(a>b)
        { 
            if(a>c)
                return a;
            else 
                if(b>c)
                    return b;
                else 
                    return c;
        }
        else
        {
            if(b>c)
                return b;
            else 
                return c;
        }
    }   

    public static  void main(String args[]) {

        int a=19;
        int b=2;
        int c=1;

        System.out.println(largest(a,b,c));  
  }
}

答案 1 :(得分:2)

每个.java文件只允许一个公共顶级类(顶级类是不包含在另一个类中的类)。

在funk.java中定义funk而没有其他顶级类。

将任何其他顶级类放在文件名与类名匹配的文件中。

关于第二个问题,如果声明一个返回特定类型的方法,例如int,那么通过该方法的所有路径必须导致return语句返回有效值。在您的示例中,可能未输入if语句!

如果b == aa < b会怎样?

答案 2 :(得分:1)

您是否尝试将多个类放入一个文件中?每个类都应该使用适当的名称获取自己的.java文件。同时使你的类的第一个字母大写,因为这是命名约定。

顺便说一下,只有当a大于c时,你的函数才会起作用。你错过了一些案例。

编辑:你可以拥有嵌套类,但我认为你现在可能想远离类似的东西。

答案 3 :(得分:1)

在Java中,公共类必须位于名称与类名相同的单独文件中。

所以把你的funk类放在firstprog.java文件中的funk.java文件和firstprog类中 或者在funk类中删除public,然后这个类将具有默认的包修饰符。

答案 4 :(得分:0)

对于你的第二个错误,逻辑似乎有点......在b> gt的情况下没有返回语句。一个。

答案 5 :(得分:0)

  

为什么会这样?

如果您的意思是“为什么我会收到此错误”,那是因为您没有将该类放在自己的文件中,而且您必须这样做。如果你的意思是“为什么我必须把这个类放在自己的文件中”,那是因为Java这样说:每个文件有一个public类型(类或接口)。

具体而言,“自己的”文件必须具有相同的名称:public class funk进入funk.javapublic class firstprog进入firstprog.java

答案 6 :(得分:0)

public class firstprog {

    public static int largest(int a,int b,int c) 
    {

         if(a>b)
         { 
              if(a>c)
              {
                  return a;
              }
              else if(b>c)
              {
                  return b;
              }
              else
              {
                  return c;
              }
         }
         return 0;
    }   

    public static  void main(String args[]) {

        int a=7;
        int b=8;
        int c=9;

        System.out.println(largest(a,b,c));

    }
}

注意:你必须添加return语句,因为a不大于b,所以它不会进入if块。在你的bigt(...)中它期望return语句为int ..所以你必须再添加一个return语句。然后它工作......干杯...... !!!

答案 7 :(得分:0)

在编译期间,编译器找不到(a> b)的并行else条件,即=> if(a <= b)

如果您的输入与此块匹配,它将返回什么? 所以你应该提供这个

答案 8 :(得分:0)

其他用户已经回答了此Eclipse错误。无论如何,这里是找到最大数量的int类型的替代方法

替代-使用stream()查找最大整数:

public static int largest(int a, int b, int c) {
    return Arrays.asList(a, b, c).stream().max(Integer::compareTo).get().intValue();
}

错误摘要:

这是Eclipse错误:

The method must return a result of type int

错误原因:

并非所有情况都在方法中得到最大的照顾。 “外部”条件'if(a> b)'需要“返回整数”。

替代-使用“清理代码”概念“早回报” /“急切回报”的“ if语句”:

public static int largest(int a, int b, int c) {
    if(a > b && a > c) {
        return a;
    }

    if(b > c) {
        return b;
    }

    return c;
}