这两个方法,如果我按照最下面的方式调用,第二个语句会把第一个方法再重新做一遍,但按道理应该只输出第一个方法的返回出来的数组才对啊,帮我看看为啥

这两个方法,如果我按照最下面的方式调用,第二个语句会把第一个方法再重新做一遍,但按道理应该只输出第一个方法的返回出来的数组才对啊,帮我看看为啥

public float[] initScore() { 

Scanner input = new Scanner(System.in);

System.out.println("请输入要存储的数学成绩的数量");

int x = input.nextInt();

float[] a = new float[x];

for(int n=0;n<a.length;n++) {

System.out.println("请输入第"+(n+1)+"个成绩");

float s = input.nextFloat();

a[n] = s;

}

return a;

}

public void displayAllScore(float[] f) {

for(float n:f) {

System.out.print(n+" ");

}

}

}

s.initScore();

s.displayAllScore(s.initScore());


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕小小 2021-11-16 18:31:21

同学你好,同学调用了两次initScore()方法,所以会执行两次initScore()方法。

https://img1.sycdn.imooc.com//climg/6193889509f945ee03810155.jpg

同学若想打印输出可以参考如下代码。

https://img1.sycdn.imooc.com//climg/6193887509316d6803850049.jpg

祝学习愉快~

  • 提问者 木然on #1

    但是下面的方法应该输出第一个方法的返回值,不是第一个方法的方法体啊(个人理解)

    2021-11-16 18:36:11
  • 好帮手慕小小 回复 提问者 木然on #2

    同学你好,并不是哦。float[] initScore = s.initScore() 中 initScore 是方法执行后返回的float[]类型的数组,返回的不是方法体,所以displayAllScore()方法中输出遍历的是数组initScore,而不是方法体哦。

    相关课程回顾无参有返回值方法:https://class.imooc.com/lesson/2056#mid=48811


    进一步解析:

    使用对象s调用方法,即s.initScore(),方法被调用几次其对应的方法体就会被执行几次。

    1)下图所示的调用方式并不是“第二个语句把第一个语句重新做一遍”,而是执行了两次initScore()方法体的内容。

    https://img1.sycdn.imooc.com//climg/6194607e09d3f25b02640077.jpg

    2)若想“只输出第一个方法的返回出来的数组”,需要使用变量来接收一下initScore()方法的返回值,并将方法的返回值传入displayAllScore()方法中,使得initScore()方法返回的数组被遍历输出。

    同学可以使用如下代码进行测试验证

    //		如下为测试代码:
    		//调用initScore(),并用float[]类型变量initScore1接收方法的返回值
    		float[] initScore1 = s.initScore();
    		//打印输出initScore1。
    		//注:Arrays.toString()方法作用:返回指定数组内容的字符串表示形式。
    		System.out.println(Arrays.toString(initScore1));
    		float[] initScore2 = s.initScore();
    		System.out.println(Arrays.toString(initScore2));
    		float[] initScore3 = s.initScore();
    		System.out.println(Arrays.toString(initScore3));
    
    //		如下为同学代码修改后的参考代码:
    		float[] initScore = s.initScore();
    		s.displayAllScore(initScore);

    https://img1.sycdn.imooc.com//climg/61946a9909126b1f06470315.jpg

    另外建议同学在上传代码时选中对应的代码语言,使得代码格式更加工整便于阅读及解答。

    https://img1.sycdn.imooc.com//climg/6194673c09c5204701220235.jpg

    祝学习愉快~

    2021-11-17 10:24:03
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师