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

代码哪里有问题?

代码哪里有问题?

光量子的泪 2018-09-05 18:24:48
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--,最终也不会实现你想要的获取前三名的目的,这就得看你逻辑思考了,建议问题需要自己思考解决,跑下程序就很清晰了。

查看完整回答
3 反对 回复 2018-09-05
?
皮县豆福脑

TA贡献18条经验 获得超4个赞

首先上传代码的时候可以选择代码语言,然后发布出来就是有格式的代码;接下来说说你遇到的问题:

https://img1.sycdn.imooc.com//5b90ed2b0001634e04970426.jpg

问题有两点

  1. 循环条件中应为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;
        }
    }
}

希望可以帮到你~

查看完整回答
反对 回复 2018-09-06
?
慕UI6269418

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

代码哪里都是问题!

查看完整回答
反对 回复 2018-09-06
  • 3 回答
  • 0 关注
  • 1106 浏览

添加回答

举报

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