import java.util.Arrays;
public class HelloWorld {
//完成 main 方法
public static void main(String[] args) {
int[] scores = {89,-23,64,91,119,52,73};
HellWorld hello =new HelloWorld();
System.out.println("考试成绩前三名为:");
hello.rank(scores);
}
}
//定义方法完成成绩排序并输出前三名的功能
public void rank(int[] scores){
Arrays.sort(scores);
int num = 0;
while(num<3){
for(int i=scores.length-1;i>0;i--){
if(scores[i]>=0&&scores[i]<=100){
System.out.println(scores[i]);
num++;
}
}
}
}
这里应该是成绩小于0或者成绩大于100,故写法应该为:scores[i]<0 || socres[i]>100,0分与100都是正常分数,正常逻辑来讲,不应该写为小于等于或者大于等于。
你的循环是错的。
当你的for循环做完后, 你的num 肯定是大于3 的了。
因为是要先做for循环,当你的scores 是100 和0 之内, 打印出score[i] , 并且Num ++ , 做完这个循环之后检查while循环, 所以你就会打印出全部的Scores了。
我的代码:
import java.util.Arrays;
public class HelloWorld {
//完成 main 方法
public static void main(String[] args)
{
int scores[]= {89 , -23 , 64 , 91 , 119 , 52 , 73};
HelloWorld a = new HelloWorld();
System.out.println("The top three grades of this exam are: ");
Arrays.sort(scores);
a.sort(scores);
}
//定义方法完成成绩排序并输出前三名的功能
void sort(int scores[])
{
int available = 1;
for(int element = scores.length -1 ; element>= 0 ; element--)
{
if(scores[element] < 0 || scores[element]>100)
{
continue;
}
System.out.println(scores[element]);
available++;
if(available > 3)
{
break;
}
}
}