问答详情
源自:7-1 编程练习

程序输出错误调试

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]);

       }

       

    }

 }

}


提问者:慕粉3339798 2016-06-21 23:41

个回答

  • 用户1222123
    2016-06-27 21:19:13

     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]);

                }

            } 

        }


  • waves_lee
    2016-06-22 10:29:26

    数组排序后,变为[-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,不满足条件,程序执行结束。

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

  • 今天有风
    2016-06-22 00:46:18

     //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;
                }