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

用带参带返回值不能完成这个吗?

import java.util.Arrays;

public class HelloWorld {

    //完成 main 方法

    public static void main(String[] args) {

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

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

        HelloWorld hello = new HelloWorld();    

        int b = hello.count(scores);

        System.out.println(b);

        

    }

    

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

public int count(int scores[]){

    Arrays.sort(scores);

    int num = 0;

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

        int a = 0;

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

            continue;

        }

        a = scores[i];

        num++;

        if(num > 3){

            break;

        }

        return a;

    }

}

}


请问这样错在哪里呢


提问者:茂名彭于晏4170430 2017-06-11 11:36

个回答

  • 黑夜_K
    2017-06-14 19:27:55

    用带参带返回值可以完成:

    package test4;

    import java.util.Arrays;

    public class Test45 {

       //完成 main 方法

       public static void main(String[] args) {

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

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

           Test45 hello = new Test45();    

           int[] b = hello.count(scores);//将返回值赋给数组b

           System.out.println(Arrays.toString(b));//用Arrays.toString方法输出数组b的内容

       }

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

    public int[] count(int[] scores){//返回值类型应该为数组int[]

            int[] a = new int[3];//定义数组a的长度

       Arrays.sort(scores);//排序

       int num = 0;

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

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

               continue;

           }


           if(num >= 3){

               break;

           }else{//数组a赋值前三名的成绩

            a[num] = scores[i];

            }

                num++;

       }

            return a;//返回数组a的内容

    }

    }

    改动的地方都有注释,可以看着理解一下

  • qq_n1别碰我_03761290
    2017-06-11 19:14:39

    你的数组声明就有问题  应该是 int[] scores  = {89, -23, 64, 91, 119, 52, 73};吧  还有就是传参  也应该是public int count(int[] scores)