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

关于本任务的另一种实现方法

public class HelloWorld {
   
    //完成 main 方法
    public static void main(String[] args) {
        int[] scores={89,-23,64,91,119,52,73};
        HelloWorld hello=new HelloWorld();
        System.out.println("考试成绩的前三名为:");
        hello.get123(scores);
        }
   
    //定义方法完成成绩排序并输出前三名的功能
    public void get123(int[] scores){
        int max1=scores[0];
        int max2=scores[0];
        int max3=scores[0];
        for(int i=0;i<scores.length;i++){
            if(scores[i]>0&&scores[i]<100){
                if(max1<scores[i]){
                    max1=scores[i];
                }
              
            }
        }
        for(int j=0;j<scores.length;j++){
            if(scores[j]>0&&scores[j]<100){
                if(scores[j]>max2&&scores[j]<max1){
                    max2=scores[j];
                }
            }
        }
        for(int k=0;k<scores.length;k++){
            if(scores[k]>0&&scores[k]<100){
                if(scores[k]>max3&&scores[k]<max2){
                    max3=scores[k];
                }
            }
        }
        System.out.println(max1);
        System.out.println(max2);
        System.out.println(max3);
    }
   为什么这个代码执行出来结果是这样,第三名成绩怎么出不来

考试成绩的前三名为:
91
89
89

正在回答

1 回答

        int max1=scores[0];
        int max2=scores[0];
        int max3=scores[0];

你这里赋值就直接三个变量全是89了,我的亲。后面两个循环的里面的条件判断语句

 if(scores[j]>max2&&scores[j]<max1){

if(scores[k]>max3&&scores[k]<max2){

这两个条件都为假,里面的赋值语句都没执行过。

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

慕码人8367464 提问者

也就是说,scores[0]最开始是等于max2的,第一次循环时判断条件不满足,循环就不会继续执行下去了吧?我在后面加上else{continue;}可以吗?这样是否会陷入死循环?
2016-12-28 回复 有任何疑惑可以回复我~
#2

Mikkey1984

不是循环进不了,循环都能进,但是里面那两层判断过不去。再说了,优化的代码那么多,为什么还坚持这么绕的代码啊?
2016-12-28 回复 有任何疑惑可以回复我~

举报

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

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

进入课程

关于本任务的另一种实现方法

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