2015-09-05 107 views
1

我试图让代码打印出三个等级中最高的;但是,最高级方法中的if/else语句在返回d中发现错误。我试过把if(d> b & & d> c)return 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); 
     } 
    } 

回答

0

,因为在第二个分号,如果

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

终止条件语句那里和return c;成为将得到执行,无论条件的声明,将其删除

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)); 
}