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

运行后只显示"考试成绩的前三名为:”;为什么没有成绩输出呢?

运行后只显示"考试成绩的前三名为:”;为什么没有成绩输出呢?

地狱de指挥官 2016-10-23 19:55:07
import java.util.Arrays;/** * 实现输出考试成绩的前三名 * 要求: * 1、 考试成绩已保存在数组 scores 中,数组元素依次为 89 , -23 , 64 , 91 , 119 , 52 , 73 * 2、 要求通过自定义方法来实现成绩排名并输出操作,将成绩数组作为参数传入 * 3、 要求判断成绩的有效性( 0—100 ),如果成绩无效,则忽略此成绩*/public class HelloWorld { // 完成 main 方法 public static void main(String[] args) { int[] scores = { 89, -23, 64, 91, 119, 52, 73 };// 成绩数组 System.out.println("考试成绩的前三名为:"); HelloWorld hello = new HelloWorld();// hello对象 hello.scs(scores);// 调用scs方法 } // 定义方法完成成绩排序并输出前三名的功能 public void scs(int[] scores) { int count = 3; Arrays.sort(scores); for (int i = scores.length - 1; count > 0; i++) { if (scores[i] > 100 || scores[i] < 0) {// 不满足条件1-100的成绩跳出 continue; } else { count--; System.out.println(scores[i]);// 依次输出前三名成绩 } } }}
查看完整描述

2 回答

已采纳
?
Tobey_滔

TA贡献242条经验 获得超128个赞

错误位置在csc函数的for循环中..for (int i = scores.length - 1; count > 0; i++) {}

你是从后往前遍历的...不应该i++...i++会出现越界的...改成i--即可

// 定义方法完成成绩排序并输出前三名的功能
	public void scs(int[] scores) {
		int count = 3;
		Arrays.sort(scores);
		for (int i = scores.length - 1; count >= 0; i--) {
			if (scores[i] > 100 || scores[i] < 0) {// 不满足条件1-100的成绩跳出
				continue;
			} else {
				count--;
				System.out.println(scores[i]);// 依次输出前三名成绩
			}
		}
	}

还有count >= 0  下标是从0开始的...你不等于0就会少对一个元素进行判断哦

查看完整回答
1 反对 回复 2016-10-23
?
地狱de指挥官

TA贡献1条经验 获得超0个赞

//img1.sycdn.imooc.com//580ca7d900016fae00800089.jpg

原来是这样,(*^__^*) 嘻嘻……谢谢

查看完整回答
反对 回复 2016-10-23
  • 2 回答
  • 1 关注
  • 1552 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信