qq_荒原困兽_04231195
2020-01-18 20:31
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};
int []getscores=hello.getScores(scores);
for (int i = 0; i < getscores.length; i++) {
System.out.println(getscores[i]);
}
}
//定义方法完成成绩排序并输出前三名的功能
public int[] getScores(int [] scores){
int count=0;
int []No3=new int[3];
Arrays.sort(scores);
for(int i=scores.length-1;i>=0;i--){
if(scores[i]<0||scores[i]>100){
continue;
}
count++;
if(count>3){
break;
}
else {
No3[count--]=scores[i];
}
}
return No3;
}
}
这样写不就好了么,用ArrayList而不是List
只说你的结果为啥不多奥,其他的先不说,首先看到你的count++,系统在执行完这条语句之后,count变为了1,好,因为这里的count等于1,所以执行else里的语句:count--,这里又把count降为了0,然后结束了本次循环,下次循环再执行到count++时,由于count已经被降为0了,所以count又等于1,然后进入了一个假性的死循环,一直执行完了整个for循环,所以最后52被赋值给了No3[1],为啥是下标是1呢,因为count--等于count还没改变的值,就等于1。反正我是不知道改啥了,想过一个思路吧,最好不要count++,count--一起使用。
直接sort,然后reverse,再用下标输出
主函数里的for循环不需要,在你getscores里加个输出语句就好了,
count为什么是count--,不需要用数组来保存得到的3个数,直接输出就好了。
Java入门第一季(IDEA工具)升级版
1165538 学习 · 17586 问题
相似问题
回答 7
回答 1
回答 2
回答 4
回答 1