有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java不可访问错误

我正试图打印出三个等级中最高的一个;但是,最高方法中的if/else语句在返回d中查找错误。我已尝试将if(d>;b&;d>;c)返回d,以及else返回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) 个答案

  1. # 1 楼答案

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

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

    应该是

    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));
    }
    
  2. # 2 楼答案

    因为第二个if中的分号

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

    这就终止了条件语句,并且return c;变成了一条不管条件如何都能执行的语句,请删除它