慕粉3339798
2016-06-21 23:41
8-1为何只输出两个数不是三个?
import java.util.*;
public class HelloWorld {
//完成 main 方法
public static void main(String[] args) {
//定义数组
int scores[]=new int []{89,-23,64,91,119,52,73};
HelloWorld hello=new HelloWorld();
hello.sort(scores);
}
//定义方法完成成绩排序并输出前三名的功能
public void sort(int [] scores){
Arrays.sort(scores);
System.out.println("考试成绩的前三名为:");
for(int i=scores.length-1;i>=0&&i>=scores.length-3;i--){
if(scores[i]>=0&&scores[i]<=100) {System.out.println(scores[i]);
}
}
}
}
private void sort(int []scores){
Arrays.sort(scores);
System.out.println("考试成绩的前三名为:");
for(int i = scores.length -1; i >-1 ;i--){
if(scores[i] <0 || scores[i]>100)
continue;
else if(scores.length -1 -i < 4){
System.out.println(scores[i]);
}
}
}
数组排序后,变为[-23,52,64,73,89,91,119]。
第一次循环,i=6,scores[i]=119,不满足boolean条件,不输出;
第二次循环,i=5,scores[i]=91,输出;
第三次循环,i=4,scores[i]=89,输出;
第四次循环,i=3,此时i<4,不满足条件,程序执行结束。
只有两次是因为程序没有使用计数器,而是直接筛选数组后三个,而这三个中又有一个不满足输出条件,因而只有两个。
//4、 判断成绩的有效性,如果成绩小于 0 或大于 100 ,则使用 continue 忽略此成绩 //5、 如果成绩有效,则有效成绩数加 1 。判断有效成绩的个数,如果有效成绩数大于 3 ,则结束循环,只输出成绩的前三名 if(scores[i]>0 && scores[i]<100){ count++; if(count > 3){ break; }else{ System.out.println(scores[i]); } }else{ continue; }
Java入门第一季(IDEA工具)升级版
1165172 学习 · 17581 问题
相似问题