问答详情
源自:7-1 编程练习

自定义用户输入

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);
	}
}


提问者:_Doogie 2016-12-01 11:25

个回答

  • qq_3_16
    2016-12-01 21:42:44

    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]'''之类的情况了。