【问题标题】:Why cant i swap properly? [duplicate]为什么我不能正确交换? [复制]
【发布时间】:2019-04-11 06:23:54
【问题描述】:

这里是 Java 初学者。 我可以说 int i 被传递到 int n1,int j 被传递到 int n2 吗? 但我的输出是 交换后,i为1,j为2 为什么我的变量不能交换? 编辑1:看了其他帖子,有人说没有原始数据的交换方法吗?那为什么我的导师为了混淆而创建了这种交换方法?

    int i = 1;
    int j = 2;
    swap(i,j);
    System.out.println("After swapping,i is " +i + ", j is " + j);
    }

public static void swap(int n1, int n2) {
    int temp = n1;  //temp =1
     n1 = n2;  //n1 = 2
     n2= temp; //n2 = 1


【问题讨论】:

  • 因为你只改变了交换方法中局部变量的值
  • 在 Internet 上搜索“按值传递”与“按引用传递”。
  • 交换的值仅限于交换方法的范围,你必须要么从数组中的交换方法返回交换的值,要么不使用方法直接交换

标签: java variables


【解决方案1】:

将变量按值传递给方法时不会影响值,您可以将交换代码移动到原始方法:

int i = 1;
int j = 2;
int temp = i; 
i = j;  
j = temp; 
System.out.println("After swapping,i is " +i + ", j is " + j);

或者使用several answers in this question进行交换使用方法

【讨论】:

    猜你喜欢
    • 2010-10-13
    • 2016-08-15
    • 2015-12-08
    • 2013-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-23
    相关资源
    最近更新 更多