每日一練112——Java剪刀石頭布(8kyu)

題目

讓我們玩!你必須返回哪位球員贏了!如果是平局退貨Draw!。

例子:

rps('scissors','paper') // Player 1 won!
rps('scissors','rock') // Player 2 won!
rps('paper','paper') // Draw!

測試用例:

import static org.junit.Assert.*;
import org.junit.Test;

public class KataTest {
    
    @Test
    public void test1() {
        System.out.println("Fixed Tests Player 1 won!");
        assertEquals("Player 1 won!", Kata.rps("rock", "scissors"));
        assertEquals("Player 1 won!", Kata.rps("scissors", "paper"));
        assertEquals("Player 1 won!", Kata.rps("paper", "rock"));
    }
    @Test
    public void test2() {
        System.out.println("Fixed Tests Player 2 won!");
        assertEquals("Player 2 won!", Kata.rps("scissors", "rock"));
        assertEquals("Player 2 won!", Kata.rps("paper", "scissors"));
        assertEquals("Player 2 won!", Kata.rps("rock", "paper"));
    }
    @Test
    public void test3() {
        System.out.println("Fixed Tests Draw!");
        assertEquals("Draw!", Kata.rps("scissors", "scissors"));
        assertEquals("Draw!", Kata.rps("paper", "paper"));
        assertEquals("Draw!", Kata.rps("rock", "rock"));
    }
    
}

解題

My笨方法:

public class Kata {
  public static String rps(String p1, String p2) {
    if ("rock".equals(p1) && "scissors".equals(p2)) {
      return "Player 1 won!";
    } else if ("scissors".equals(p1) && "paper".equals(p2)) {
      return "Player 1 won!";
    } else if ("paper".equals(p1) && "rock".equals(p2)) {
      return "Player 1 won!";
    } else if ("scissors".equals(p1) && "rock".equals(p2)) {
      return "Player 2 won!";
    } else if ("paper".equals(p1) && "scissors".equals(p2)) {
      return "Player 2 won!";
    } else if ("rock".equals(p1) && "paper".equals(p2)) {
      return "Player 2 won!";
    } else if ("scissors".equals(p1) && "scissors".equals(p2)) {
      return "Draw!";
    } else if ("paper".equals(p1) && "paper".equals(p2)) {
      return "Draw!";
    } else if ("rock".equals(p1) && "rock".equals(p2)) {
      return "Draw!";
    } else {
      return null;
    }
  }
}

Other:

巨聰明的方法們

public class Kata {
  public static String rps(String p1, String p2) {
    if(p1 == p2) return "Draw!";
    int p = (p1 + p2).equals("scissorspaper") || (p1 + p2).equals("rockscissors") || (p1 + p2).equals("paperrock") ? 1 : 2;
    return "Player " + p + " won!";
  }
}
public class Kata {
  public static String rps(String p1, String p2) {
    return p1.equals(p2) ? "Draw!" : "Player " + ("scissorspaper paperrock rockscissors".contains(p1+p2)?1:2) + " won!";
  }
}
public class Kata {
  public static String rps(String p1, String p2) {
    if (p1 == p2) {
      return "Draw!";
    } else {
      String rules = "rockpaperscissorsrock";
      if (rules.contains(p1+p2)) {
        return "Player 2 won!";
      } else {
        return "Player 1 won!";
      }
    }
  }
}

后記

他人的方法真是非常有趣,值得借鑒。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容