import java.util.Arrays;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.showTOP3(scores); } //定义方法完成成绩排序并输出前三名的功能 public void showTOP3(int scores[]){ int count=0; Arrays.sort(scores); for(int i=scores.length-1;i>=0;i++){ if(scores[i]<0||scores[i]>100){ continue; } else{ System.out.println(scores[i]); count++; } if(count>3) break; } }}
3 回答
chandou
TA贡献22条经验 获得超11个赞
1、首先注意你的编码规范,不知道是不是贴代码的没注意还是什么情况,有点混乱,良好的编码规范是十分重要的;
2、如果单纯的解决你这段程序的BUG,只要把for循环中的i++,更改为i--即可,初始化i赋值为数组的长度-1,如果在i++,就会报数组下标越界的错误;
3、只更改i--,最终也不会实现你想要的获取前三名的目的,这就得看你逻辑思考了,建议问题需要自己思考解决,跑下程序就很清晰了。
皮县豆福脑
TA贡献18条经验 获得超4个赞
首先上传代码的时候可以选择代码语言,然后发布出来就是有格式的代码;接下来说说你遇到的问题:
问题有两点
循环条件中应为i--
你使用Arrays类的sort( )方法对数组进行排序,默认按升序排列,由于要输出的是前三名成绩,所以从后往前遍历,即倒序遍历。
2.终止条件应为count==3
判断有效成绩的个数,如果有效成绩数等于3 ,则结束循环,只输出成绩的前三名。
综上,正确的代码应该是
import java.util.Arrays; 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.showTOP3(scores); } // 定义方法完成成绩排序并输出前三名的功能 public void showTOP3(int scores[]) { int count = 0; Arrays.sort(scores); for (int i = scores.length - 1; i >= 0; i++) { //若进入循环不是有效的成绩时,跳过这个成绩 if (scores[i] < 0 || scores[i] > 100) { continue; } else { System.out.println(scores[i]); count++; } //累计输出的分数个数为3时,中止循环 if (count == 3) break; } } }
希望可以帮到你~
添加回答
举报
0/150
提交
取消