日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

通过Katas进行Java教程:网球比赛(轻松)

發布時間:2023/12/3 java 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 通过Katas进行Java教程:网球比赛(轻松) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

編程kata是一種練習,可以幫助程序員通過練習和重復練習來磨練自己的技能。

本文是“通過Katas的Java教程”系列的一部分。 文章分為易,中和難。

Fizz Buzz(輕松) -Java 7
柏林時鐘(簡易) – Java 7和8
網球比賽(簡易)– Java 7 反向波蘭表示法(中) – Java 7和8


本文假定讀者已經具有Java的使用經驗,熟悉JUnit測試的基本用法,并且知道如何從自己喜歡的IDE(我們是IntelliJ IDEA )運行它們。

下面顯示證明解決方案正確的測試。 解決此問題的推薦方法是使用測試驅動的開發方法(編寫第一個測試的實現,確認它通過并轉到下一個測試)。 一旦所有測試通過,就可以認為解決了問題。

測試下方提供了一種可能的解決方案。 嘗試先自己解決kata。

網球比賽

實施簡單的網球比賽

規則:

  • 從零到三分的分數分別描述為“愛”,“十五”,“三十”和“四十”。
  • 如果每方至少得分3分,并且玩家比對手多1分,那么比賽的得分對領先的玩家來說是“優勢”。
  • 如果每個玩家至少獲得了3分,并且得分相等,則得分為“降低”。
  • 第一位贏得比賽的玩家至少贏得了至少4分,并且比對手多贏得了至少2分。

[測試]

public class GameTest {Player victor;Player sarah;Game game;@Beforepublic void beforeGameTest() {victor = new Player("Victor");sarah = new Player("Sarah");game = new Game(victor, sarah);}@Testpublic void loveShouldBeDescriptionForScore0() {Game game = new Game(victor, sarah);assertThat(game, hasProperty("score", is("love, love")));}@Testpublic void fifteenShouldBeDescriptionForScore1() {sarah.winBall();assertThat(game, hasProperty("score", is("love, fifteen")));}@Testpublic void thirtyShouldBeDescriptionForScore2() {victor.winBall();victor.winBall();sarah.winBall();assertThat(game, hasProperty("score", is("thirty, fifteen")));}@Testpublic void fortyShouldBeDescriptionForScore3() {IntStream.rangeClosed(1, 3).forEach((Integer) -> {victor.winBall();});assertThat(game, hasProperty("score", is("forty, love")));}@Testpublic void advantageShouldBeDescriptionWhenLeastThreePointsHaveNeenScoredByEachSideAndPlayerHasOnePointMoreThanHisOpponent() {IntStream.rangeClosed(1, 3).forEach((Integer) -> {victor.winBall();});IntStream.rangeClosed(1, 4).forEach((Integer) -> {sarah.winBall();});assertThat(game, hasProperty("score", is("advantage Sarah")));}@Testpublic void deuceShouldBeDescriptionWhenAtLeastThreePointsHaveBeenScoredByEachPlayerAndTheScoresAreEqual() {for(int index = 1; index <= 3; index++) {victor.winBall();}for(int index = 1; index <= 3; index++) {sarah.winBall();}assertThat(game, hasProperty("score", is("deuce")));victor.winBall();assertThat(game, hasProperty("score", is(not("deuce"))));sarah.winBall();assertThat(game, hasProperty("score", is("deuce")));}@Testpublic void gameShouldBeWonByTheFirstPlayerToHaveWonAtLeastFourPointsInTotalAndWithAtLeastTwoPointsMoreThanTheOpponent() {for(int index = 1; index <= 4; index++) {victor.winBall();}for(int index = 1; index <= 3; index++) {sarah.winBall();}assertThat(game, hasProperty("score", is(not("Victor won"))));assertThat(game, hasProperty("score", is(not("Sarah won"))));victor.winBall();assertThat(game, hasProperty("score", is("Victor won")));}}

測試代碼可以在GitHub GameTest.java中找到。 可以在GitHub PlayerTest.java中找到另一組測試(未在上面列出)。

[一種可能的解決方案]

public class Game {private Player player1;private Player player2;public Game(Player player1, Player player2) {this.player1 = player1;this.player2 = player2;}public String getScore() {if (player1.getScore() >= 3 && player2.getScore() >= 3) {if (Math.abs(player2.getScore() - player1.getScore()) >= 2) {return getLeadPlayer().getName() + " won";} else if (player1.getScore() == player2.getScore()) {return "deuce";} else {return "advantage " + getLeadPlayer().getName();}} else {return player1.getScoreDescription() + ", " + player2.getScoreDescription();}}public Player getLeadPlayer() {return (player1.getScore() > player2.getScore()) ? player1 : player2;}}

Java解決方案代碼可以在Game.java解決方案中找到。 它使用Player.java解決方案中可以找到的Player類(上面未列出)。

翻譯自: https://www.javacodegeeks.com/2014/05/java-tutorial-through-katas-tennis-game-easy.html

總結

以上是生活随笔為你收集整理的通过Katas进行Java教程:网球比赛(轻松)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。