天天看點

PAT (Basic Level) Practice (中文)1071 小賭怡情 (15 分)(Java實作)題目描述:輸入格式:輸出格式:輸入樣例 1:輸出樣例 1:輸入樣例 2:輸出樣例 2:

題目描述:

常言道“小賭怡情”。這是一個很簡單的小遊戲:首先由計算機給出第一個整數;然後玩家下注賭第二個整數将會比第一個數大還是小;玩家下注 t 個籌碼後,計算機給出第二個數。若玩家猜對了,則系統獎勵玩家 t 個籌碼;否則扣除玩家 t 個籌碼。

注意:玩家下注的籌碼數不能超過自己帳戶上擁有的籌碼數。當玩家輸光了全部籌碼後,遊戲就結束。

輸入格式:

輸入在第一行給出 2 個正整數 T 和 K(≤ 100),分别是系統在初始狀态下贈送給玩家的籌碼數、以及需要處理的遊戲次數。随後 K 行,每行對應一次遊戲,順序給出 4 個數字:n1 b t n2 其中 n1 和 n2 是計算機先後給出的兩個[0, 9]内的整數,保證兩個數字不相等。b 為 0 表示玩家賭小,為 1 表示玩家賭大。t 表示玩家下注的籌碼數,保證在整型範圍内。

輸出格式:

對每一次遊戲,根據下列情況對應輸出(其中 t 是玩家下注量,x 是玩家目前持有的籌碼量):

  • 玩家赢,輸出 Win t! Total = x.;
  • 玩家輸,輸出 Lose t. Total = x.;
  • 玩家下注超過持有的籌碼量,輸出 Not enough tokens. Total = x.;
  • 玩家輸光後,輸出 Game Over. 并結束程式。

輸入樣例 1:

100 4
8 0 100 2
3 1 50 1
5 1 200 6
7 0 200 8
           

輸出樣例 1:

Win 100!  Total = 200.
Lose 50.  Total = 150.
Not enough tokens.  Total = 150.
Not enough tokens.  Total = 150.
           

輸入樣例 2:

100 4
8 0 100 2
3 1 200 1
5 1 200 6
7 0 200 8
           

輸出樣例 2:

Win 100!  Total = 200.
Lose 200.  Total = 0.
Game Over.
           
import java.util.Scanner;

/**
 * @author snowflake
 * @create-date 2019-07-17 17:23
 */
public class Main {
    public static void main(String[] args) {
        Scanner cin = new Scanner(System.in);
        int money = cin.nextInt();
        int maxRound = cin.nextInt();
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < maxRound; i++) {
            int n1 = cin.nextInt();
            int b = cin.nextInt();
            int t = cin.nextInt();
            int n2 = cin.nextInt();
            // 如果玩家下注量大于自己有的前
            if (t > money) {
                sb.append("Not enough tokens.  Total = " + money + ".");
            } else {
                // 如果玩家預測正确
                // b == 0 && n2 < n1 或者 b == 1 && n2 > n1
                // 本來想到還有一種可能 玩家猜測 相等
                // 但是題目保證了 n1 != n2,是以過濾掉這種情況,直接使用 else 即可,不使用 else if
                boolean status = b == 0 && n2 < n1 || b == 1 && n2 > n1;
                if (status) {
                    money += t;
                    sb.append("Win " + t + "!  Total = " + money + ".");
                } else {
                    money -= t;
                    sb.append("Lose " + t + ".  Total = " + money + ".");
                }
            }
            // 每次的換行符
            sb.append("\n");
            // 最後判斷玩家金錢
            if (money <= 0) {
            	// 為了保證結果輸出的一緻性,在 Game Over 後 添加 換行符("\n")
                sb.append("Game Over.");
                sb.append("\n");
                break;
            }
        }
        System.out.println(sb.substring(0, sb.lastIndexOf("\n")));
    }
}