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

感觉思路是对的为什么不行呢

不能按照顺序输出,是不是第一个for循环没有进行呢

提问者:chen7841835 2015-03-26 21:05

个回答

  • 慕哥5457829
    2015-03-27 01:18:49
    已采纳

    你的思路有问题,排序方法错了

    改了一下你的代码,你自己运行比较一下吧

    //import java.util.Arrays;
    public class HelloWorld {
        
        //完成 main 方法
        public static void main(String[] args) {
            int[] scores = {89, 91, 64, -23, 119, 52, 73};
            get(scores);
        }
        
        //定义方法完成成绩排序并输出前三名的功能
        private static void get(int scores[])
        {        
            if (scores != null && scores.length > 0) {
                int totalLen = scores.length; //数组长度
                int tempInt;
                
                //排序:第一个依次跟后面的其他每个成员比较大小,接着第二个依次跟后面的比较大小,以此类推
                for (int i = 0; i < totalLen; i++) {
                    for (int j = i + 1; j < totalLen; j++) {
                        if (scores[i] > scores[j]) {
                            tempInt = scores[i];
                            scores[i] = scores[j];
                            scores[j] = tempInt;
                        }
                    }
                }
                
                System.out.println("前三名的成绩是:" + scores[totalLen - 1] + ", " + scores[totalLen - 2] + ", " + scores[totalLen -3]);
                
                //完成排序后数组内的数字应该是从小到大排列的
                System.out.print("----> The int array after sorting is: [");
                for (int i = 0; i < scores.length; i++) {
                    System.out.print(scores[i]);
                    System.out.print(i == scores.length - 1 ? "]" : ", ");
                }
            }
        }
    }


  • 放学路上的小学生
    2015-04-19 17:00:34

    import java.util.Arrays;
    public class HelloWorld {
        //完成 main 方法
        public static void main(String[] args) {
        HelloWorld hello = new HelloWorld();
        int[] scores ={89,-23,64,91,119,52,73};
        Arrays.sort(scores);    
        System.out.println("考试成绩的前三名为:");    
        hello.getScores(scores);
        }
        
        //定义方法完成成绩排序并输出前三名的功能
        public void getScores(int[] scores){
            int count = 0;
            for(int i=scores.length-1;i>=0;i--){
                if(scores[i]<=100 && scores[i] >=0 && count < 3){
                    System.out.println(scores[i]);
                    count += 1;
                }          
            }
        }
    }