Java 不可达错误

Java 不可达错误,java,eclipse,Java,Eclipse,我正试图打印出三个等级中最高的一个;但是,最高方法中的if/else语句在返回d中查找错误。我试着把if(d>b&&d>c)返回d,否则也返回d。但这两次程序都表示无法访问。有人能解释一下我做错了什么吗?谢谢大家! import java.util.Scanner; public class Methods2 { public static double average(double a){ double ave= a/3.0; ret

我正试图打印出三个等级中最高的一个;但是,最高方法中的if/else语句在返回d中查找错误。我试着把if(d>b&&d>c)返回d,否则也返回d。但这两次程序都表示无法访问。有人能解释一下我做错了什么吗?谢谢大家!

    import java.util.Scanner;
    public class Methods2 {
      public static double average(double a){
        double ave= a/3.0;
        return ave;
      }
      public static double highest(double b, double c, double d){
        if(b>c && b>d)
          return b;
        if(c>b && c>d);
          return c;
        return d;//unreachable code 
      }
      public static void main(String[] args){
        Scanner kb= new Scanner(System.in);
        System.out.println("Enter your name.");
        String name = kb.nextLine();
        System.out.println("Enter your three grades.");
        double b= kb.nextDouble();
        double c= kb.nextDouble();
        double d= kb.nextDouble();
        double av= average(b+c+d);
        System.out.println(av);
        double high= highest(b,c,d);
        System.out.println(high);
      }
    }

因为第二个if中的分号

if(c>b && c>d);

在那里终止条件语句并
返回c
成为一条不管条件如何都会执行的语句,请删除它,因为第二个if中有分号

if(c>b && c>d);

在那里终止条件语句并
返回c成为一条无论条件如何都会执行的语句,请将其删除

是。因为分号使它成为一个空的
if
body

if(c>b && c>d);
    return c;
应该是

if(c>b && c>d)
    return c;
或者(可以说更好)

您还可以使用将其设置为一行方法,如

public static double highest(double b, double c, double d) {
    return Math.max(d, Math.max(b, c));
}

对。因为分号使它成为一个空的
if
body

if(c>b && c>d);
    return c;
应该是

if(c>b && c>d)
    return c;
或者(可以说更好)

您还可以使用将其设置为一行方法,如

public static double highest(double b, double c, double d) {
    return Math.max(d, Math.max(b, c));
}