標籤:
按書上的範例來操作的。
不過,書上提到的BUG,我沒有在看下一章時就解決了哈。。
從網上尋找的刪除數組元素的方法。
其實,將資料結構更改為ARRAYLIST,可能更簡單。:)
GameHelper.java
import java.io.*;public class GameHelper { public String GetUserInput(String prompt) { String inputLine = null; System.out.println(prompt + " "); try { BufferedReader is = new BufferedReader(new InputStreamReader(System.in)); inputLine = is.readLine(); if (inputLine.length() == 0 ) return null; } catch (IOException e) { System.out.println("IOException: " + e); } return inputLine; }}
SimpleDotCom.java
public class SimpleDotCom { int[] locationCells; int numOfHits = 0; public void setLocationCells(int[] locs) { locationCells = locs; } public int[] delLocationCells(int eleInt) { for(int i = 0; i < locationCells.length; i++) { if (eleInt == locationCells[i]) { for(int j = i + 1; j < locationCells.length; j ++) { locationCells[i] = locationCells[j]; } } } return locationCells; } public String checkYourself(String stringGuess) { int guess = Integer.parseInt(stringGuess); String result = "miss"; for (int cell : locationCells) { if (guess == cell) { result = "hit"; numOfHits++; delLocationCells(guess); break; } } if (numOfHits == locationCells.length) { result = "kill"; } System.out.println(result); return result; }}
SimpleDotComTestDrive.java
public class SimpleDotComTestDrive { public static void main(String[] args) { int numOfGuesses = 0; GameHelper helper = new GameHelper(); SimpleDotCom theDotCom = new SimpleDotCom(); int randomNum = (int) (Math.random() * 5); int[] locations = {randomNum, randomNum + 1, randomNum + 2}; theDotCom.setLocationCells(locations); boolean isAlive = true; while(isAlive == true) { String guess = helper.GetUserInput("Enter a number"); String result = theDotCom.checkYourself(guess); numOfGuesses++; if(result.equals("kill")) { isAlive = false; System.out.println("You took " + numOfGuesses + " guesses."); } } }}
輸出:
簡單的猜數字(JAVA版)