离竹
2020-04-04 22:08
//导入Arrays类
import java.util.Arrays;
public class HelloWorld {
//完成 main 方法
public static void main(String[] args) {
HelloWorld hello= new HelloWorld();
int[] scores={89,-23,64,91,119,52,73};
hello.top3(scores);
System.out.println("考试成绩前三名:");
}
//定义方法完成成绩排序并输出前三名的功能
public void top3(int[] scores){
//定义一个变量,统计有效成绩的前三名的数量
int so=0;
for ( int i = scores.length - 1; i >= 0; i-- ){
if(scores[i]>0&&scores[i]>100){
continue;
}
so++;
Arrays.sort(scores);
System.out.println(scores[i]);
}
}
}
将数组作为参数进入函数后,开始并未对数组进行处理,for语句取数组的最后一个元素为73,if语句不满足,不执行continue,循环继续,so++,数组排序,输出排序后最后一个值,即最大值119,进入第二次循环,输出倒数第二大的值91,后续一直未满足if语句,持续输出,直到遍历完整个数组。
Arrays.sort(scores);排序应该放在for循环前面,而且你的判断语句也错了。
你的判断语句出错了,应该是scores[i]<=100
import java.util.Arrays;
public class HelloWorld {
//完成 main 方法
public static void main(String[] args) {
int[] scores = {89,-23,64,91,119,52,73};
HelloWorld hello = new HelloWorld();
hello.sort(scores);
}
//定义方法完成成绩排序并输出前三名的功能
public int[] sort(int[] scores){
Arrays.sort(scores);
int count = 0;
for(int i =scores.length-1;i>=0;i--){
if(scores[i]<=100&&scores[i]>=0){
System.out.println(scores[i]);
count++;
}else{
continue;
}
if(count==3){
break;
}
}
return scores;
Java入门第一季(IDEA工具)升级版
1165172 学习 · 17581 问题
相似问题