ในบทความนี้ เราจะเรียนรู้วิธีสลับค่าของตัวแปร 2 ตัวในภาษา Java โดยใช้ตัวแปรชั่วคราว (Temporary Variable)
ตัวอย่างการทำงาน
ก่อนสลับ:
value_1: 45, value_2: 70
หลังสลับ:
value_1: 70, value_2: 45
อัลกอริทึม (ใช้ตัวแปรชั่วคราว)
- เริ่มต้นโปรแกรม
- ประกาศตัวแปร 3 ตัว:
value_1, value_2, temp - รับค่าจากผู้ใช้ หรือกำหนดค่าไว้ล่วงหน้า
- เก็บ value_1 ไว้ใน temp
- กำหนด value_2 ให้ value_1
- กำหนด temp ให้ value_2
- แสดงผลลัพธ์
- จบโปรแกรม
ตัวอย่างที่ 1: รับค่าจากผู้ใช้
import java.util.Scanner;
public class NumbersSwap {
public static void main(String[] args) {
int value_1, value_2, my_temp;
System.out.println("The required packages have been imported");
Scanner my_scan = new Scanner(System.in);
System.out.println("A scanner object has been defined");
System.out.println("Enter the first number");
value_1 = my_scan.nextInt();
System.out.println("Enter the second number");
value_2 = my_scan.nextInt();
System.out.println("----Before swap----");
System.out.println("The first value is " + value_1 + " and the second value is " + value_2);
my_temp = value_1;
value_1 = value_2;
value_2 = my_temp;
System.out.println("----After swap----");
System.out.println("The first value is " + value_1 + " and the second value is " + value_2);
}
}
ตัวอย่างที่ 2: กำหนดค่าไว้ล่วงหน้า
public class NumbersSwap {
public static void main(String[] args) {
int value_1 = 45, value_2 = 70, my_temp;
System.out.println("The required packages have been imported");
System.out.println("----Before swap----");
System.out.println("The first number is " + value_1 + " and the second number is " + value_2);
my_temp = value_1;
value_1 = value_2;
value_2 = my_temp;
System.out.println("----After swap----");
System.out.println("The first number is " + value_1 + " and the second number is " + value_2);
}
}
วิธีอื่นๆ ที่ไม่ต้องใช้ตัวแปรชั่วคราว
// วิธี 1: ใช้คณิตศาสตร์ (อาจล้นถ้าตัวเลขใหญ่)
a = a + b;
b = a - b;
a = a - b;
// วิธี 2: ใช้ XOR (สำหรับ integer เท่านั้น)
a = a ^ b;
b = a ^ b;
a = a ^ b;
// วิธี 3: Java 8+ ใช้ List (สำหรับ object)
List list = Arrays.asList(a, b);
Collections.swap(list, 0, 1);
วิธีใช้ตัวแปรชั่วคราว (temp) เข้าใจง่ายที่สุดและปลอดภัยที่สุด แนะนำให้ใช้