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

求大神解答;运行结果为:考试成绩的前三名为[I@15db9742,运行结果应该是前三名的成绩,怎么是乱码,哪里错了

import java.util.Arrays;

public class HelloWorld {

    

    //完成 main 方法

    public static void main(String[] args) {


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

    HelloWorld hello = new HelloWorld();    

    int [] count= hello.show(scores);

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

    }

    

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

    public int [] show(int [] scores){

        Arrays.sort(scores);

        int num = 0;

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

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

             continue;

         }

         num++;

         if(num > 3){

             break;

         }

        }

        return scores;

    }

    

    

    

    

    

    

    

    

    

}


提问者:慕少224234 2018-05-19 17:52

个回答

  • 慕数据927735
    2018-05-19 19:03:00
    已采纳

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

    这里count是一个数组,不能直接输出,需要用Arrays.toString()类输出


    2.return scores;

    你返回的scores,其实在方法show里,你并没有改变scores数组里的任何值,返回的还是原来的scores,里面的元素并没有改变。


    3.你写的代码还有太多需要改进的地方,太过冗余,多参考慕课给的正确答案。

  • hemimTNT
    2018-05-20 11:27:18

    输出的是数组的指针,感觉题主的需求是输出整个数组吧。可以用Arrays.deepToString,Arrays.deepToString与Arrays.toString不同之处在于,Arrays.deepToString更适合打印多维数组

  • 慕无忌1273438
    2018-05-19 23:09:03

    额,那个不是乱码,是内存的地址值,你要用数组输出前三名的话,应该加个for循环给count增加标签,不过我还是不知道你的需求是什么

  • qq_英伦玫瑰空白_0
    2018-05-19 18:39:43

    import java.util.Arrays;

    pubilc class HelloWorld{

    public static void main(String[] args){

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

    HelloWorld hello=new HelloWorld();

    hello.getScore(scores);

    }

    public void getScore(int[] scores){

    Arrays.sort(scores);

    int count=0;

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

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

    {

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

    count++;

    }

    if(count>=3)

    break;

    }

    }

    }



  • 异安
    2018-05-19 18:16:15

    定义方法那里 

    public int 【】  把【】去掉;