按书上的样例来操作的。
不过,书上提到的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."); } } }}
输出: