请问我这个报错[I@15db9742是怎么回事啊?

来源:7-1 编程练习

苏北行

2018-11-18 10:53

import java.util.Arrays;

public class HelloWorld {

    

    //完成 main 方法

    public static void main(String[] args) {

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

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

    HelloWorld hello = new HelloWorld();

    hello.cj(scores);

    int[] a= hello.cj(scores);

    System.out.println(a);

    }

    

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

    public int[] cj(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>2){

                break;

            }

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

        }return scores;

    }

   

}


写回答 关注

6回答

  • 勤奋的程序员001
    2018-11-18 21:50:45
    已采纳

    a是int[],你直接输出,当然是打印地址,

  • 花書畫
    2018-11-22 08:57:58

    因为你想输出的是数组,所以打印成这样.数组输出需要转换一下:Arrays.toString(a),你改一下就好了。 System.out.println(Arrays.toString(a));

    苏北行

    好嘞,我懂了,谢谢你

    2018-12-12 15:08:51

    共 1 条回复 >

  • mua猫
    2018-11-21 22:45:51

    错误1:num++;  if(num>2){ break;}  假如在上一轮num=2,意味着已经有两个有效成绩。在这一轮中,假如有效,你首先就加了个1,就变成3,进入if,直接break退出了,根本不会输出这第三个有效成绩。正确的顺序应该是先加一,再输出,再判断。

    错误2:return scores; int[] a= hello.cj(scores); System.out.println(a); 这个我也说不太清楚,但是我觉得应该是不能这样子的吧,不说语法,从逻辑来看,scores只是升序排序之后的数组,你再输出来和题目不符,题目是前三高。我觉得cj方法可以不用返回直接用void,在cj方法里面输出,当你判断数组里这个数满足要求你就可以输出它,增一条语句比你这个要稍微简单点:System.out.prinln(scores[i]);  main方法里呢只要调用cj方法就好,hello.cj(scores);


    苏北行

    嗯...第一个错误是我在实验的时候改了忘记改回来了,第二个是我想的,想看看改成有返回值的是怎么改,为什么我改了反而出错了,现在我懂了,谢谢你

    2018-12-12 15:10:49

    共 1 条回复 >

  • qq_崖柏_euvxL0
    2018-11-18 20:21:27

    你的代码里

    int[] a= hello.cj(scores);

        System.out.println(a);

    这里没必要,不需要写,直接删了

    if(num>2)这里只会输出俩个数字,应该改成if(num>3)

    苏北行

    嗯,我是想设成有返回值的那种,想看看怎么改,还是谢谢你

    2018-12-12 15:08:11

    共 1 条回复 >

  • qq_崖柏_euvxL0
    2018-11-18 20:16:24

    import java.util.Arrays;

    public class HelloWorld {

        //完成 main 方法

        public static void main(String[] args) {

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

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

        HelloWorld hello = new HelloWorld();

        hello.cj(scores);

        }

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

        public int[] cj(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;

                }

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

            }

    return scores;

        }

    }

        

        

        

        

        

        

    试试这样

  • wei__wei
    2018-11-18 15:27:51

    不需要返回值

    苏北行

    我的意思是想知道如果设成有返回值的该怎么写

    2018-12-12 15:06:37

    共 1 条回复 >

Java入门第一季(IDEA工具)升级版

0基础萌新入门第一课,从Java环境搭建、工具使用、基础语法开始

1165794 学习 · 17588 问题

查看课程

相似问题