_Doogie
2016-12-01 11:25
package com.imooc;
import java.util.Arrays;
import java.util.Scanner;
public class HelloWorld {
public static void main(String[] args){
int[] score = new int[6];
HelloWorld hello = new HelloWorld();
Scanner input = new Scanner(System.in);
for(int i=0;i<6;i++){
System.out.print("请输入第"+(i+1)+"个人的成绩:");
score[i] = input.nextInt();
}
String result = hello.getTop3(score);
System.out.println("前三名的成绩为:"+result);
}
/**
* 求所有考试成绩中的前三名
* @return 前三名的成绩
*/
public String getTop3(int[] score){
int[] top3 = new int[3];
int j = 0;
Arrays.sort(score);
for(int i=score.length-1;i>score.length-4;i--){
if(score[i] >100 || score[i] < 0) continue;
top3[j++] = score[i];
}
return Arrays.toString(top3);
}
}
for(int i=score.length-1;i>score.length-4;i--){
if(score[i] >100 || score[i] < 0) continue;
top3[j++] = score[i];
}
你问题出在 i>score.length-4 这里,
你运行你的代码可以发现你如果输入的数字全部符合1~100的范围的话,程序可以正确运行。
问题就是,你sort(score)之后,你for遍历的只有倒数的那三个分数,而如果其中一个分数超过了100分的话,超过100的那个分数被continue掉了,然后你遍历的数就只剩两个数了,所以结果就会显示类似'''前三名的成绩为:[100, 90, 0]'''之类的情况了。
Java入门第一季(IDEA工具)
1168075 学习 · 18753 问题
相似问题