无法访问的错误

时间:2015-09-05 00:39:45

标签: 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;
        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);
      }
    }

2 个答案:

答案 0 :(得分:4)

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

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

应该是

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

或(可以说更好)

if(c>b && c>d) {
    return c;
}

您还可以使用Math.max(double, double)将此作为单行方法,例如

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

答案 1 :(得分:0)

因为第二个分号是

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

在那里终止条件语句,return c;成为一个语句,无论条件如何都会被执行,删除它