2019年6月30日 星期日

Java 兩人隨機猜拳(switch+case)

看過《神鵰俠侶》裡周伯通的左右手互搏嗎?
如果今天要讓兩個人互相猜拳的話,怎麼寫呢?



上一篇介紹了random函數,
可以以此為思考的出發點,再配合switch...case條件判斷式試著寫寫看吧!

switch(變數名稱或運算式){
    case (符合數字或字元):(記得是冒號不是分號)
        陳述句1;
        break;(如符合則執行陳述句1後中斷並離開switch)
    case (符合數字或字元):
        陳述句2;
        break;
    ...
}

思考邏輯:將剪刀、石頭、布各設定成1、2、3再互相比較

public static void main(String[] args) {
int a = (int)(Math.random()*3+1);
int b = (int)(Math.random()*3+1);
switch(a) {
case 1:
System.out.println("小明出剪刀");
break;
case 2:
System.out.println("小明出石頭");
break;
case 3:
System.out.println("小明出布");
break;
}
switch(b) {
case 1:
System.out.println("小華出剪刀");
break;
case 2:
System.out.println("小華出石頭");
break;
case 3:
System.out.println("小華出布");
break;
}
if (a-b==0) {
System.out.println("兩人平手");
}
else if(a-b==1 ||a-b==-2) {
System.out.println("小明勝");
}
else {
System.out.println("小華勝");
}
}

switch跟if蠻像的:
差異在switch只取出1次值,然後跟case進行比對;
if則是每次都要取出值再進行比對,如果狀況越多,那麼運算的速度就越慢。
但是並不是說if就不好,如果遇到組合條件,就該用if了。

以上,同行見笑,
如有任何指教請不吝留言告知,謝謝。

4 則留言:

  1. 請問要如何改成五戰三勝

    回覆刪除
    回覆
    1. 您需要先設定2個新int變數c=0及d=0,
      當else if時c++,else時d++
      另外需要改以迴圈方式執行猜拳,直到c或d=3時打破迴圈回傳勝利結果或印出勝利結果

      刪除
    2. 所以要在哪裡加上去
      還是重寫一個Class

      刪除
  2. 能不能直接打程式給我呢

    回覆刪除

無暇的程式碼(Clean code)金句

The only valid measurement of code quality: WTFs/minute.