2013-09-17 3 views
-2

Я начинаю изучать Java, и я создаю функцию «swap», которая заменяет числа.Почему функция swap не работает для меня?

, когда я запускаю этот код, его не заменяют.

как я могу решить эту проблему?

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 
+3

Java передается по значению. –

+3

О, Боже, не это снова. Отправляйся! – codethulhu

+0

@SotiriosDelimanolis: Это утверждение ничего не значит для неофита Java. –

ответ

0

В Java все передается по значению, включая примитивные типы. У вас есть копии i и j в вашем методе swap. Вы обменяли значения i и j, но только местные значения i и j в рамках вашего метода swap. i и j в main не были изменены.

Чтобы изменить значения, внесите код свопинга inline в методе main, а не отдельным методом.

1

Java передается по значению, даже для ссылок. Вы меняете копию исходных значений, а не оригиналов.

Невозможно реализовать метод swap в Java, чтобы делать то, что вы предлагаете.

Смежные вопросы