-1

我开始学习 java,并构建了替换数字的“交换”功能。

当我运行此代码时,它不会替换它们。

我该如何解决这个问题?

public static void swap(double i, double j){
        double temp = i;
        i = j;
        j = temp;
}

这主要是:

double i = 1;
double j = 2;
System.out.println(i+" - "+ j);
swap(i, j);
System.out.println(i+" - "+ j);

在控制台中我看到:

1.0 - 2.0
1.0 - 2.0

我需要看看:

1.0 - 2.0
2.0 - 1.0
4

2 回答 2

1

在 Java 中,一切都是按值传递的,包括原始类型。i你有j你的swap方法的副本。您确实交换了值ij,但仅交换了本地值i和方法j范围内的值swap。和iin没有改变jmain

要交换值,请在main方法中内联实现交换代码,而不是在单独的方法中。

于 2013-09-17T16:03:02.777 回答
1

Java 是按值传递的,即使对于引用也是如此。您正在更改原始值的副本,而不是原始值。

没有办法在 Java 中实现交换方法来执行您的建议。

于 2013-09-17T16:03:28.837 回答