程序运行为什么是10?

程序运行为什么是10?

package com.imooc;

public class Arc {
    public void fun(int x,int y,int z){
        z=x*x+y*y;
    }
    public static void main(String[] args) {
        // TODO 自动生成的方法存根
        Arc d=new Arc();
        int a=10;
        d.fun(6, 2, a);
       System.out.println(a);
    }

}

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

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

2回答
一叶知秋519 2017-10-19 10:26:37

a的值并没有发生改变;修改建议:将fun 方法定义为int类型,即public int fun ,然后将z的值返回,在主方法中 a=d.fun(6, 2, a);再打印输出a的值就会发生改变了。

祝学习愉快~

  • 提问者 慕粉4144252 #1
    那老师void无返回类型如果连int 都无法执行,那他还有什么作用?
    2017-10-19 18:44:57
  • 一叶知秋519 回复 提问者 慕粉4144252 #2
    额。。。在void类型的fun方法中打印一下System.out.println(z);再通过d.fun(6, 2, a);就可以输出运算结果了。通过int类型的方法,可以有返回值,想要打印的时候再进行赋值打印,而且可以参与进一步的运算。
    2017-10-19 18:51:04
Ironxi_work 2017-10-19 02:48:32

个人愚见,谨慎参考。1.你在主方法中定义了 a=10;

 public static void main(String[] args) {
        // TODO 自动生成的方法存根
        Arc d=new Arc();
        int a=10;
        d.fun(6, 2, a);
       System.out.println(a);
    }

2.不妨换为

public static void main(String[] args) {
        // TODO 自动生成的方法存根
        Arc d=new Arc();
        int a;
        d.fun(6, 2, a);
       System.out.println(a);
    }

这样输出结果就应该是40;

问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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