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

错在哪了 求解答

错在哪了 求解答

toola 2016-07-16 20:09:27
要求输出成绩的前三名
查看完整描述

5 回答

?
冰山点水

TA贡献109条经验 获得超149个赞

我把你回复我的代码里面错误的地方给你修改过来了,有时间可以把你的代码精简优化一下。

import java.util.Arrays;

public class Test4_2 {
	public static void main(String[] args) {
		Test4_2 test = new Test4_2();
		int[] scores = { 89, -23, 64, 91, 119, 52, 73 }; // test.get(Arrays.sort(scores));
		Arrays.sort(scores);
		test.get(scores);// Arrays。sort是没有返回值的
	}

	public void get(int[] scores) {
		int count = 0;
		int[] grade = new int[3]; //声明并初始化数组grade
		for (int i = scores.length - 1; i >= 0; i--) {
			if ((0 < scores[i]) && (scores[i] < 100)) {
				count++;// 有效成绩个数  count++等同于count=count+1
				if (count > 3) {
					break;
				} else {
					grade[count-1] = scores[i]; //把得到每一个有效的成绩保存到数组中
				}
			} else {
				continue;
			}
		}
		System.out.println("成绩前三名为" + Arrays.toString(grade));
	}
}


查看完整回答
3 反对 回复 2016-07-17
?
冰山点水

TA贡献109条经验 获得超149个赞

局部变量的作用域问题,grade的作用域仅限于条件语句内,应该定义在循环体外,可在count变量后面定义并初始化grade。

查看完整回答
1 反对 回复 2016-07-16
  • toola
    toola
    import java.util.Arrays; public class Test4_2 { public static void main(String[] args) { Test4_2 test = new Test4_2(); int[] scores = { 89, -23, 64, 91, 119, 52, 73 }; // test.get(Arrays.sort(scores)); Arrays.sort(scores); test.get(scores);// Arrays。sort是没有返回值的 } public void get(int[] scores) { int count = 0; int[] grade; for (int i = scores.length - 1; i <= 0; i--) { if ((0 < scores[i]) && (scores[i] < 100)) { count = count + 1;// 有效成绩个数 if (count > 3) { break; } else { grade[3] = scores[i]; } } else { continue; } } System.out.println("成绩前三名为" + Arrays.toString(grade)); } }
  • 冰山点水
    冰山点水
    import java.util.Arrays; public class Test4_2 { public static void main(String[] args) { Test4_2 test = new Test4_2(); int[] scores = { 89, -23, 64, 91, 119, 52, 73 }; // test.get(Arrays.sort(scores)); Arrays.sort(scores); test.get(scores);// Arrays。sort是没有返回值的 } public void get(int[] scores) { int count = 0; int[] grade = new int[3]; //声明并初始化数组grade for (int i = scores.length - 1; i >= 0; i--) { if ((0 < scores[i]) && (scores[i] < 100)) { count++;// 有效成绩个数 count++等同于count=count+1 if (count > 3) { break; } else { grade[count-1] = scores[i]; //把得到每一个有效的成绩保存到数组中 } } else { continue; } } System.out.println("成绩前三名为" + Arrays.toString(grade)); } }
?
至繁归于至简_

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

学到了东西了

查看完整回答
反对 回复 2016-07-16
?
yanrun

TA贡献317条经验 获得超240个赞

get方法里的grade是定义在for循环里的,输出语句在for循环外面没法访问。

查看完整回答
反对 回复 2016-07-16
  • toola
    toola
    public void get(int[] scores) { int count = 0; int[] grade; for (int i = scores.length - 1; i <= 0; i--) { if ((0 < scores[i]) && (scores[i] < 100)) { count = count + 1;// 有效成绩个数 if (count > 3) { break; } else { grade[3] = scores[i]; } } else { continue; } } System.out.println("成绩前三名为" + Arrays.toString(grade)); } } 还是有问题
  • 5 回答
  • 0 关注
  • 1666 浏览

添加回答

举报

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