为了账号安全,请及时绑定邮箱和手机立即绑定

请问我这个报错[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};

    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 回答

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

0 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~
#1

苏北行 提问者

好嘞,我懂了,谢谢你
2018-12-12 回复 有任何疑惑可以回复我~

错误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);


0 回复 有任何疑惑可以回复我~
#1

苏北行 提问者

嗯...第一个错误是我在实验的时候改了忘记改回来了,第二个是我想的,想看看改成有返回值的是怎么改,为什么我改了反而出错了,现在我懂了,谢谢你
2018-12-12 回复 有任何疑惑可以回复我~

你的代码里

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

    System.out.println(a);

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

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

0 回复 有任何疑惑可以回复我~
#1

苏北行 提问者

嗯,我是想设成有返回值的那种,想看看怎么改,还是谢谢你
2018-12-12 回复 有任何疑惑可以回复我~

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;

    }

}

    

    

    

    

    

    

试试这样

0 回复 有任何疑惑可以回复我~

不需要返回值

0 回复 有任何疑惑可以回复我~
#1

苏北行 提问者

我的意思是想知道如果设成有返回值的该怎么写
2018-12-12 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Java入门第一季(IDEA工具)升级版
  • 参与学习       1165702    人
  • 解答问题       17588    个

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

进入课程

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信