噬魂师
2020-07-01 13:31
为什么我最后输出的是最小的三个,而且该剔除的数据没有剔除。。。。在线求大佬解答
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();
System.out.println("考试成绩的前三名为:");
hello.topThree(scores);
}
//定义方法完成成绩排序并输出前三名的功能
public void topThree(int[] scores){
Arrays.sort(scores);
for(int i=scores.length-1;i>=0;i--){
if(scores[i]<0||scores[i]>100)
continue;
}
for(int j=0;j<=2;j++){
System.out.println(scores[j]);
}
}
}
大佬,要不这样:
package java12;
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();
System.out.println("考试成绩的前三名为:");
hello.topThree(scores);
}
//定义方法完成成绩排序并输出前三名的功能
public void topThree(int[] scores){
Arrays.sort(scores);
int count = 0;
for(int i = scores.length - 1;i >= 0;i--){
if(scores[i] < 0 ||scores[i] > 100)
{
continue;
}
else{
System.out.println(scores[i]);
count++;
if(count >= 3) break;
}
}
}
}
哈哈,我竟然看懂了
首先continue是跳出本次循环,那么你第一个for就毫无用处,你可以设置为超过限制的数变成一个负数,比如负一(如果是找最小的几个数,那么定义为大于100的数,比如101)
另外,sort是从小到大排序,所以如果你想找到最小,那么可以直接从scores[0]开始,采用i++,去找最小的三个,但是如果想找最大的,可以从scores.length - 1开始,采用i--去找最大的三个(当然还有个笨办法是创建一个新数组,让新数组的length-1等于scores[0],以此类推)
sort是从小到大排序,所以你输出的是最小的3个。
而且continue的作用只是跳出本次循环,不是剔除数据。
Java入门第一季(IDEA工具)升级版
1165552 学习 · 17587 问题
相似问题