- PR -

javaのポインタ(?) 値の入れ替えについて

1
投稿者投稿内容
くれよん
ベテラン
会議室デビュー日: 2005/04/28
投稿数: 74
投稿日時: 2005-08-25 01:29
c言語のように関数で値の入れ替えをしたいのですが、どのようにすればよろしいでしょうか?現在のソースは以下のようになっています。mainに帰ってきた時に値が変わっていない理由はわかりますが、どのように書けばいいのかわかりません。どなたかご教授ください。

public static void main(String[] args){
int a =10,b=5;
System.out.println(a + " " + b);
SWAP(a,b);
System.out.println(a + " " + b);
}

public static void SWAP(int a,int b) {
int swap_work = a; a = b; b = swap_work;
}
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2005-08-25 02:45
SWAPメソッドに渡ってきているのはポインタではなくて値です。
SWAPメソッド内でaやbに代入をしてもmainのローカルスコープの変数の値は変わりません。
メソッドを展開して、mainメソッド内で同様の処理をしてみましょう。
スフレ
ぬし
会議室デビュー日: 2005/05/27
投稿数: 281
お住まい・勤務地: 東京
投稿日時: 2005-08-25 03:01
intを入れ換えるメソッドを作るのは不可能です。クラスで運ぶ必要があります。

コード:
class IntWrapper {
  int value;
  public String toString() {
    return Integer.toString(this.value);
  }
}

public static void main(String[] args) {
  IntWrapper aw = new IntWrapper();
  IntWrapper bw = new IntWrapper();
  aw.value = 10;
  bw.value = 5;
  System.out.println(aw + " " + bw);
  swap(aw, bw);
  System.out.println(aw + " " + bw);
}

static void swap(IntWrapper aw, IntWrapper bw) {
  int tmp;
  tmp = aw.value; aw.value = bw.value; bw.value = tmp;
}



java.lang.Integer は残念ながらこの目的には使えません。
mio
ぬし
会議室デビュー日: 2005/08/25
投稿数: 734
お住まい・勤務地: 神奈川県
投稿日時: 2005-08-25 09:23
int[]を渡して、[0]を交換するというのもできるのでは。
どのみち直接の交換ではないですが。
1

スキルアップ/キャリアアップ(JOB@IT)