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

程序输出错误调试

8-1为何只输出两个数不是三个?

import java.util.*;

public class HelloWorld {

    

    //完成 main 方法

    public static void main(String[] args) {

        //定义数组

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

        HelloWorld hello=new HelloWorld();

        hello.sort(scores);

        

    }

   

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

    public void sort(int [] scores){

       Arrays.sort(scores);

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

       for(int i=scores.length-1;i>=0&&i>=scores.length-3;i--){

          if(scores[i]>=0&&scores[i]<=100) {System.out.println(scores[i]);

       }

       

    }

 }

}


正在回答

3 回答

 private void sort(int []scores){

        Arrays.sort(scores);

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

        for(int i = scores.length -1; i >-1 ;i--){

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

                continue;

            else if(scores.length -1 -i < 4){

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

            }

        } 

    }


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

数组排序后,变为[-23,52,64,73,89,91,119]。

第一次循环,i=6,scores[i]=119,不满足boolean条件,不输出;

第二次循环,i=5,scores[i]=91,输出;

第三次循环,i=4,scores[i]=89,输出;

第四次循环,i=3,此时i<4,不满足条件,程序执行结束。

只有两次是因为程序没有使用计数器,而是直接筛选数组后三个,而这三个中又有一个不满足输出条件,因而只有两个。

0 回复 有任何疑惑可以回复我~
 //4、 判断成绩的有效性,如果成绩小于 0 或大于 100 ,则使用 continue 忽略此成绩
 //5、 如果成绩有效,则有效成绩数加 1 。判断有效成绩的个数,如果有效成绩数大于 3 ,则结束循环,只输出成绩的前三名
 
 if(scores[i]>0 && scores[i]<100){
                count++;
                if(count > 3){
                    break;
                }else{
                    System.out.println(scores[i]); 
                }
            }else{
                continue;
            }


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

举报

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

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

进入课程

程序输出错误调试

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