【问题标题】:why the swap func didnt work for me? [duplicate]为什么交换功能对我不起作用? [复制]
【发布时间】:2013-09-22 04:04:09
【问题描述】:

我开始学习 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

【问题讨论】:

  • Java 是按值传递的。
  • 天啊,又不是这个了。放弃线程!
  • @SotiriosDelimanolis:这句话对 Java 新手来说毫无意义。
  • @RobertHarvey 当然,但这是他们可以查找的关键字。

标签: java


【解决方案1】:

在 Java 中,一切都是按值传递的,包括原始类型。您的 swap 方法中有 ij 的副本。您确实交换了值 ij,但仅在 swap 方法的范围内交换了本地值 ijmain 中的 ij 未更改。

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-03
      相关资源
      最近更新 更多