日期:2014-05-20 浏览次数:20911 次
import java.io.BufferedInputStream; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class GuessGame { List<String> words = new ArrayList<String>(); String word = ""; String matchs = " "; int missTime = 0; GuessGame(String... args) { words.addAll(Arrays.asList(args)); } public void randomWords() { int temp = (int) (Math.random() * words.size()); word = words.get(temp); } public void guess() { System.out.print("Enter a letter in word " + word.replaceAll("[^" + matchs + "]", "*") + " >>>"); BufferedInputStream in =new BufferedInputStream(System.in); char c = ' '; try { c = (char)in.read(); } catch (IOException e) { e.printStackTrace(); } if (matchs.indexOf(c) != -1) { System.out.println(c + " is already in the word"); guess(); return; } else{ if(word.indexOf(c) != -1){ matchs+=String.valueOf(c); String temp = word.replaceAll("[^" + matchs + "]", "*"); if(temp.indexOf('*') == -1){ System.out.println("the word is "+word+" .you missed "+ missTime +" time"); } else{ guess(); } } else{ System.out.println(c+" is not in the word"); missTime++; guess(); } } } public static void main(String args[]){ GuessGame gg=new GuessGame("welcome","helloword","niceshoot"); boolean flag = true; while(flag){ gg.randomWords(); gg.guess(); System.out.println("Do you want to guess for another word ? Enter y or n>>>"); BufferedInputStream in =new BufferedInputStream(System.in); try { if((char)in.read() == 'n'){ flag = false; } } catch (IOException e) { e.printStackTrace(); } gg.missTime =0; gg.matchs = " "; } } }
------解决方案--------------------
还是有点意思,所以写了个,你看看吧
package com.test; import java.util.Random; import java.util.Scanner; public class Test { static char[] word; static char[] printWord; static String singleWord = ""; static int count; public static void main(String[] args) { boolean over = false; word = randomWord().toCharArray(); printWord = new char[word.length]; for(int i = 0; i < word.length; i++){ printWord[i] = '*'; } Scanner scan = new Scanner(System.in); while(true){ if(!over){ System.out.println("(guess) Enter a letter in word " + new String(printWord) + " > "); String in = scan.next(); if(in.length() == 1){ char c = in.charAt(0); boolean haveChar = false; if(singleWord.indexOf(c) == -1){ for(int i = 0; i < word.length; i++){ if(c == word[i]){ printWord[i] = c; singleWord += String.valueOf(c); haveChar = true; } } }else{ haveChar = true; System.out.println(String.valueOf(c) + " is already in the word"); } if(!haveChar){ count++; System.out.println(String.valueOf(c) + " is not in the word"); } if(String.valueOf(printWord).indexOf("*") == -1){ System.out.println("the word is " + String.valueOf(word)); System.out.println("the word is program.you missed " + count + " time"); System.out.println("Do you want to guess for another word? Enter y or n >"); over = true; } } }else{ String in = scan.next(); if("y".equalsIgnoreCase(in)){ over = false; word = randomWord().toCharArray(); printWord = new char[word.length]; singleWord = ""; count = 0; for(int i = 0; i < word.length; i++){ printWord[i] = '*'; } }else if("n".equalsIgnoreCase(in)){ break; }else{ System.out.println("Do you want to guess for another word? Enter y or n >"); continue; } } } } public static String randomWord(){ String[] words = new String[]{"hello", "word", "jack", "hehehehe", "honghe", "beibi"}; Random random = new Random(); return words[random.nextInt(6)]; } }