我对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));
}
}
为什么会这样?
答案 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 == a
或a < 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.java
,public 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;
}