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

帮我看一下。。。

public class HelloWorld {

    

    //完成 main 方法

    public static void main(String[] args) {

    int[] scores={89,-23,64,91,119,52,73};    

    System.out.println("考试成绩的前三名为");    

    Helloword hello=new Helloworld();    

    hello.showTop3(scores);    

    }

    

    //定义方法完成成绩排序并输出前三名的功能

    public void showTop3(int[] scores){

    Arrays.sort(scores);

    int m=0;

    for(int i=0;i<scores.length;i++){

    if(scores[i]<0||scores[i]>100){

        continue;

    }

    m++;

    if(m>=3){

        break;

    }

   System.out.println(scores[i]); 

    }

}

}

为什么要定义hello而不是scores,它的用处是什么Helloword hello=new Helloworld()?

代码运行为什么会出错

正在回答

3 回答

public class HelloWorld {

    

    //完成 main 方法

    public static void main(String[] args) {

    int[] scores={89,-23,64,91,119,52,73};    

    System.out.println("考试成绩的前三名为");    

    Helloword hello=new Helloworld();      // -------此处严重错误,你的类名是HelloWorld,然而你定义它的对象                                                                         的时候却用 Helloword 声明,拼写错误1;

                                                                        后面用HelloWorld的构造方法HelloWorld()创建对象的时候,却拼                                                                           写成Helloworld() ,拼写错误2.--------

    hello.showTop3(scores);    

    }

    

    //定义方法完成成绩排序并输出前三名的功能

    public void showTop3(int[] scores){

    Arrays.sort(scores);                          //----------Arrays.sort()方法的调用必须在 开头引入import java.util.Arrays;

                                                               该方方法将数组从小到大排序。所以你用下面的for循环输出3个0-100范围                                                                内的分数是最低分

    int m=0;

    for(int i=0;i<scores.length;i++){             //--------此处for循环内部逻辑结构有误,m++应该写在if{}方法内                                                                               部,不然即便是无效分数m++依然执行,例如前3个数都不符合,m                                                                           也会加到3,然后break。 

    if(scores[i]<0||scores[i]>100){                   由于Arrays.sort()是从小到大排序,你的for循环表达式应该改为

        continue;                                               for( int i =scores.length; i>=0; i--)

    }

    m++;

    if(m>=3){

        break;

    }

   System.out.println(scores[i]); 

    }

}

}



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

光之心MAX

m++那里我看错了, m的错误在下面的 if(m>=3) 因为 m=3时,就跳出循环,后面还来不及输出第三个分数。应该把 System.out.println(scores[i]); 放在 if(m>=3)之前!!!!
2016-06-15 回复 有任何疑惑可以回复我~
#2

挪威没有春树 提问者

非常感谢!
2016-06-15 回复 有任何疑惑可以回复我~

你这输出的是最小的两个,数量还少了一个,而且多了一个大括号,

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

HelloWorld 是类,hello是他的对象。没有import java.util.Arrays;  sort 默认是升序排列,你这是最小的三个吧。

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

举报

0/150
提交
取消
Java入门第一季(IDEA工具)升级版
  • 参与学习       1165940    人
  • 解答问题       17588    个

0基础萌新入门第一课,从Java环境搭建、工具使用、基础语法开始

进入课程

帮我看一下。。。

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