老师,我想把交换数据的方法单独提出来,应该怎么做呢?我调用过方法但实际值还是没变

老师,我想把交换数据的方法单独提出来,应该怎么做呢?我调用过方法但实际值还是没变

public class Test{

    private static void exchange(int a,int b){

    int temp =a;

    a = b;

    b = temp;

    }

    public static void main(String[] args) {

    int x = 1, y = 2;

    exchange(x,y);

    System.out.println(x + " " + y);

    }

}

正在回答

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

2回答

是的,如果你想在主程序中交换数值,需要将x和y定义为全局变量,然后在exchange方法中将修改之后的值再重新赋值给变量x和y,这样在主方法中的x和y就改变了。请参考一下代码进行修订:

public class Test{
    static int x = 1, y = 2;
    private static void exchange(int a,int b){
    int temp =a;
    a = b;
    b = temp;
    x=a;
    y=b;
    }

    public static void main(String[] args) {

    exchange(x,y);

    System.out.println(x + " " + y);

    }

}

修订之后的效果。

http://img1.sycdn.imooc.com//climg/5b41bb3700016b0700640048.jpg

针对你的代码也有更好的方法,可以将exchange方法改为无参的,请参考下图代码进行修改,如果我的建议解决了你的问题,请采纳,祝学习愉快~

public class Test{
    static int x = 1, y = 2;
    private static void exchange(){
        int temp =x;
        x = y;
        y = temp;
    }

    public static void main(String[] args) {

        exchange();

        System.out.println(x + " " + y);

    }

}


  • 大雪碧 提问者 #1
    非常感谢!
    2018-07-08 15:26:17
chrismorgen 2018-07-08 14:43:40

你需要在exchange方法中输出看xy的值有没变,如下图所示。

http://img1.sycdn.imooc.com//climg/5b41b1e10001457202900209.jpg

输出的内容如下图:

http://img1.sycdn.imooc.com//climg/5b41b29300018be601000049.jpg

  • 提问者 大雪碧 #1
    exchange方法内,a和b的值交换成功了,但是我主程序中掉用这个方法不能交换数值
    2018-07-08 15:13:53
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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