猿问

求解啊 ,各位大佬大神!!


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

    这道题 我想用有返回值的方式去解决,我这样写为什么老是报错啊?


Felix_Sun
浏览 452回答 1
1回答

安浪创想

这个代码真乱啊啊啊错误分析:函数返回时直接返回数据就行,不需要再定义类型了,只有初始定义时候才需要在变量前加int[]这样的类型。而且你的sort函数的返回值应该是 传入的 scores,而不是前面过程中的nums代码如下:import java.util.Arrays; public class HelloWorld {     //完成 main 方法     public static void main(String[] args) {         System.out.println("考试成绩的前三名为:");         HelloWorld hello = new HelloWorld();         int[] scores = new int[]{89, -23, 64, 91, 119, 52, 73};         int[] nums = new int[3];         nums = hello.sort(scores);     }     //定义方法完成成绩排序并输出前三名的功能     public int[] sort(int[] scores) {         Arrays.sort(scores);         int count = 0;         for (int i = scores.length - 1; i >= 0; i--) {             if (scores[i] < 0 || scores[i] > 100) {                 continue;             } else {                 count++;             }             if (count > 3) {                 break;             }             System.out.println(scores[i]);         }         return scores;     } }而你的这个代码不够优化:应该这样优化:import java.util.Arrays; public class HelloWorld {     //完成 main 方法     public static void main(String[] args) {         System.out.println("考试成绩的前三名为:");         int[] scores = new int[]{89, -23, 64, 91, 119, 52, 73};         int[] nums = new int[3];         nums = sort(scores);         for (int rank :                 nums) {             System.out.println(rank);         }     }     //定义方法完成成绩排序并输出前三名的功能     static int[] sort(int[] scores) {         Arrays.sort(scores);         int count = 0;         for (int i = scores.length - 1; i >= 0; i--) {             if (scores[i] < 0 || scores[i] > 100) {                 continue;             } else {                 count++;             }             if (count > 3) {                 break;             } //            System.out.println(scores[i]); 这里是执行函数体,不要再这进行数据'使用'操作,应该把获得的数据返回去而不是在这列出来         }         return scores;     } }执行结果为:考试成绩的前三名为: -23 52 64 73 89 91 119你的算法是反的了,sort函数已经从低到高排序,你取最大数据并获得一个数据数组应该为:import java.util.ArrayList; import java.util.Arrays; public class HelloWorld {     //完成 main 方法     public static void main(String[] args) {         System.out.println("考试成绩的前三名为:");         int[] scores = new int[]{89, -23, 64, 91, 119, 52, 73};         ArrayList<Integer> nums = new ArrayList();         nums = sort(scores);         for (int i=1;i<=nums.size();i++){             System.out.println("第"+i+"名:"+nums.get(i-1));         }     }     //定义方法完成成绩排序并输出前三名的功能     static ArrayList<Integer> sort(int[] scores) {         Arrays.sort(scores);         int count = 0;         ArrayList<Integer> newTopScores = new ArrayList<>();         for (int i = scores.length - 1; i >= 0; i--) {             if (scores[i] < 0 || scores[i] > 100) {                 continue;             } else {                 count++;             }             if (count > 3) {                 break;             } //            System.out.println(scores[i]); 这里是执行函数体,不要再这进行数据'使用'操作,应该把获得的数据返回去而不是在这列出来 //            把最大的添加到数组里保存起来             newTopScores.add(scores[i]);         }         return newTopScores;     } }运行结果为:考试成绩的前三名为: 第1名:91 第2名:89 第3名:73
随时随地看视频慕课网APP
我要回答