Javaで2つの数値を交換(スワップ)するプログラムの書き方
この記事では、Javaで2つの数値を交換(スワップ)する方法について解説します。数値の交換は、一時変数(テンポラリ変数)を使うことで簡単に実現できます。
まずは、入力と出力のイメージを確認しましょう。
入力
たとえば、次のような2つの値が与えられたとします。
value_1 : 45 value_2 : 70
出力
交換後の出力は次のようになります。
value_1 : 70 value_2 : 45
アルゴリズム
一時変数を使ったスワップ処理の手順は以下の通りです。
Step 1- 処理を開始する Step 2- 整数型変数 value_1、value_2、temp を宣言する Step 3- 2つの値を読み込む Step 4- value_1 の値を一時変数 temp に退避させる Step 5- value_2 の値を value_1 に代入する Step 6- temp の値を value_2 に代入する Step 7- 交換後の2つの値を表示する Step 8- 処理を終了する
なぜ一時変数が必要なのか?
いきなり「value_1 = value_2」と代入してしまうと、value_1 の元の値が失われてしまいます。そこで、あらかじめ value_1 の値を一時変数に退避させておくことで、値を失うことなく安全に交換できるのです。
例1:ユーザーからの入力を受け付ける場合
ここでは、Scanner クラスを使って、ユーザーがコンソールから入力した値を交換します。
import java.util.Scanner;
public class NumbersSwap{
public static void main(String[] args){
int value_1, value_2, my_temp;
System.out.println("必要なパッケージがインポートされました");
Scanner my_scan = new Scanner(System.in);
System.out.println("Scannerオブジェクトが定義されました");
System.out.println("1つ目の数値を入力してください");
value_1 = my_scan.nextInt();
System.out.println("2つ目の数値を入力してください");
value_2 = my_scan.nextInt();
System.out.println("----交換前----");
System.out.println("1つ目の値は " + value_1 + " 、2つ目の値は " + value_2 + " です");
my_temp = value_1;
value_1 = value_2;
value_2 = my_temp;
System.out.println("----交換後----");
System.out.println("1つ目の値は " + value_1 + " 、2つ目の値は " + value_2 + " です");
}
}
出力
必要なパッケージがインポートされました Scannerオブジェクトが定義されました 1つ目の数値を入力してください 112 2つ目の数値を入力してください 34 ----交換前---- 1つ目の値は 112 、2つ目の値は 34 です ----交換後---- 1つ目の値は 34 、2つ目の値は 112 です
例2:値を直接指定する場合
次に、変数に直接値を設定してスワップを行うシンプルな例です。動作の流れを確認したい場合におすすめです。
public class NumbersSwap{
public static void main(String[] args){
int value_1, value_2, my_temp;
System.out.println("必要なパッケージがインポートされました");
value_1 = 45;
value_2 = 70;
System.out.println("----交換前----");
System.out.println("1つ目の数値は " + value_1 + " 、2つ目の数値は " + value_2 + " です");
my_temp = value_1;
value_1 = value_2;
value_2 = my_temp;
System.out.println("----交換後----");
System.out.println("1つ目の数値は " + value_1 + " 、2つ目の数値は " + value_2 + " です");
}
}
出力
必要なパッケージがインポートされました ----交換前---- 1つ目の数値は 45 、2つ目の数値は 70 です ----交換後---- 1つ目の数値は 70 、2つ目の数値は 45 です
補足:一時変数を使わないスワップ方法
算術演算を利用すれば、一時変数なしでも2つの数値を交換することが可能です。
value_1 = value_1 + value_2; value_2 = value_1 - value_2; value_1 = value_1 - value_2;
ただし、この方法は大きな数値を扱う際にオーバーフローが発生する可能性があるため、実務では一時変数を使う方法が推奨されます。
まとめ
Javaで2つの数値を交換する基本は、「一時変数に退避 → 上書き → 復元」という3ステップです。このパターンは配列の要素入れ替えやソートアルゴリズムなど、さまざまな場面で応用される重要なテクニックなので、ぜひマスターしておきましょう。
-
【Java】2つ以上の数値や配列の最大公約数(GCD)を求めるプログラム
最大公約数(GCD:Greatest Common Divisor)とは、複数の整数に共通する約数の中で最も大きいもののことです。この記事では、2つ以上の数値(配列の全要素)からGCDを求めるJavaプログラムを、サンプルコードと実行結果とあわせて解説します。サンプルコードpublic class Demo{ static int gcd_of_nums(int val_1, int val_2){ if (val_1 == 0) return val_2; return gcd_of_nums(val_2 % val_1, va
-
Javaで2つの数の公約数の個数を求めるプログラムの書き方
この記事では、Javaを使って2つの整数の公約数(共通の約数)の個数を求めるプログラムを紹介します。再帰処理によるユークリッドの互除法で最大公約数(GCD)を計算し、その約数を効率よく数える手法を、サンプルコードとともにわかりやすく解説します。 サンプルコード public class Demo{ static int find_gcd(int val_1, int val_2){ if (val_1 == 0) return val_2; return find_gcd(val_2%val_1,val_1); } sta