为了账号安全,请及时绑定邮箱和手机立即绑定

自定义用户输入

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


正在回答

1 回答

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

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

自定义用户输入

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信