2015-09-05 110 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)); 
}