import java.util.Arrays;
public class HelloWorld {
//完成 main 方法
public static void main(String[] args) {
int []scores={89,-23,64,91,119,52,73};
System.out.println("考试成绩的前三名为:");
HelloWorld hello=new HelloWorld();
hello.print(scores);
}
//定义方法完成成绩排序并输出前三名的功能
public int print(int []scores){
Arrays.sort(scores);
for(int i=scores.length-1;i>=0;i--){
if((scores[i])>0&&(scores[i])<100){
for(int j=0;j<3;j++)
System.out.println(scores[i]);
}
}
}
}
错误:自定义方法public int print(int []scores)规定了返回值类型int,但方法体内无return语句进行返回值操作,故报错
修正:将int改为void
代码逻辑问题: 1.if((scores[i])>0&&(scores[i])<100)楼主想用于筛选有效成绩,但在此题环境下较为冗杂,Array.sort()方法是默认升序排列,楼主又使用了(int i=scores.length-1;i>=0;i--)循环条件,加之预设数组中只有一个负值,所以没有必要
2.条件执行体内的嵌套循环逻辑错误,执行结果会变成一个有效成绩输出三次后,进行下一次有效成绩判断。
修成建议:1.有效值判定只保留100临界判定
2.定义一个计数变量,用于记录有效值个数以判断是否终止循环,并删除嵌套循环只输出一次有效值
方法print没有返回值类型用void,&&表示与运算,||表示或,有一个成绩即可。用计数器进行计算并且输出指定的那个成绩。