我正在努力让代码打印出三个等级中的最高分;但是,最高方法中的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);
}
}
答案 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;
成为一个语句,无论条件如何都会被执行,删除它