初學者撰寫「剪刀石頭布」遊戲時,常以數字 1、2、3 代表手勢,導致輸出難以閱讀。以下示範如何引入輔助方法 getName(int) 將數字轉為中文,並修正判斷邏輯(注意:剪刀(1)贏布(3)、石頭(2)贏剪刀(1)、布(3)贏石頭(2))。
import java.util.*;
public class RockPaperScissors {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (true) {
System.out.println("======= 猜拳遊戲 =====");
System.out.println("請出拳:(1.剪刀 2.石頭 3.布)");
int player = in.nextInt();
if (player < 1 || player > 3) {
System.out.println("輸入錯誤,請輸入 1~3");
continue;
}
int computer = (int) (Math.random() * 3) + 1;
String result;
if (player == computer) {
result = "平局";
} else if ((player == 1 && computer == 3) ||
(player == 2 && computer == 1) ||
(player == 3 && computer == 2)) {
result = "你贏了";
} else {
result = "你輸了";
}
System.out.printf("你出的是 %s\t電腦出的是 %s\t本局%s%n",
getName(player), getName(computer), result);
}
}
static String getName(int n) {
return switch (n) {
case 1 -> "剪刀";
case 2 -> "石頭";
case 3 -> "布";
default -> "未知";
};
}
}
getName() 讓主流程更乾淨,日後擴充(如加入蜥蜴、斯波克)只需修改此處。continue,避免進入亂碼邏輯。此範例展示「關注點分離」與「語義化命名」如何提升程式碼可讀性與維護性。