Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.11.2010, 22:01   #1
Mira-girl
Пользователь
 
Регистрация: 08.11.2009
Сообщений: 16
По умолчанию проблема с передачей параметров

Есть простейшая функция, которая обменивает значения своих параметров (println вставлены для проверки):
public void exchange(int a, int b)
{
a = a ^ b;
b = b ^ a;
a = a ^ b;
System.out.println(a);
System.out.println(b);
}
В пределах функции при выводе значения аргументов действительно обменяны, но вне функции, когда я пишу, например, код типа:
int b=2, c=4;
combinator.exchange(b, c);
System.out.println(b+" "+c);
выводятся изначальные значения параметров, т.е. они не поменялись.
В чем причина? (догадываюсь, что у меня переменные не по ссылке, по ходу, передаются) Как это можно исправить?
Mira-girl вне форума Ответить с цитированием
Старый 22.11.2010, 23:09   #2
DRAgon™
Форумчанин
 
Аватар для DRAgon™
 
Регистрация: 14.03.2010
Сообщений: 362
По умолчанию

Оформляйте код тегом # и выложите его полностью
и еще это не функция ,а метод.
Чем больше моя слава, тем я больше тупею; и таково, несомненно, общее правило.(А.Эйнштейн)
DRAgon™ вне форума Ответить с цитированием
Старый 22.11.2010, 23:59   #3
profi
Участник клуба Подтвердите свой е-майл
 
Регистрация: 19.11.2007
Сообщений: 1,022
По умолчанию

Код:
(догадываюсь, что у меня переменные не по ссылке, по ходу, передаются)
Правильно . Что бы решить данную проблему предлагаю число "запихнуть" в объект:

Код:
class Int{
	private int i;
	
	Int(int i){
		this.i = i;
	}
	
	public void set(int i){
		this.i = i;
	}
	
	public int get(){
		return i;
	}
	
	public String toString(){
		return String.valueOf(i);
	}
}

public class Proga {
	
	public static void main(String[] args) {
		Int a = new Int(1);
		Int b = new Int(2);
		
		f(a, b);
		
		System.out.println(a);
		System.out.println(b);
	}
	
	public static void f(Int a, Int b){
		int n = a.get();
		a.set(b.get());
		b.set(n);
	}
}
profi вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с передачей файла BleStaR C++ Builder 1 15.02.2010 20:37
Проблема с передачей значения в функцию steklyashka Помощь студентам 3 19.11.2009 22:19
Проблема с передачей кириллицы через буфер обмена Windows Vodnik Win Api 2 12.07.2009 19:12
Проблема с передачей данных методом POST Aiden Работа с сетью в Delphi 0 21.09.2008 21:11
Проблема с передачей куки arwm Работа с сетью в Delphi 7 28.12.2007 23:44