首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Java 猜拳遊戲優化:從數字輸入到中文顯示的完整重構

     編輯:程式設計綜合問答

初學者撰寫「剪刀石頭布」遊戲時,常以數字 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() 讓主流程更乾淨,日後擴充(如加入蜥蜴、斯波克)只需修改此處。
  • 正確勝負判斷:避免單純用大小比較(數字大小不代表強弱),改用明確條件組合。
  • 輸入驗證:非 1~3 直接 continue,避免進入亂碼邏輯。

此範例展示「關注點分離」與「語義化命名」如何提升程式碼可讀性與維護性。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved