这个程序的要求是:第一个人输入一个字符串,然后第二个人开始猜第一个人输入的是什么。用?代替输入的。每猜对一个字母,就显示这个字符串中含有这个字母的字符。比如说输入hi,猜对了...
这个程序的要求是:第一个人输入一个字符串,然后第二个人开始猜第一个人输入的是什么。用?代替输入的。每猜对一个字母,就显示这个字符串中含有这个字母的字符。比如说输入hi,猜对了h就显示成h?。我自己写的老是有问题,求大神帮我看一下
public class HangmanPlayer {
/** * @param args the command line arguments
*/
public static void main(String[] args) {
String s = JOptionPane.showInputDialog("Enter secret string.");
Hangman game = new Hangman(s);
String aGuess = "";
while(!game.gameOver() && aGuess !=null){
aGuess = JOptionPane.showInputDialog(game+"\nEnter next guess");
if(aGuess!= null){
game.guess(aGuess.charAt(0));
}
}
s = game + "\n" + game.getNumberOfGuesses() + "guesses";
JOptionPane.showInputDialog(null,s);
}
}
这上面是主程序(main class),下面是class
public class Hangman { private String in;
private String out = "";
private String out1 = "";
private String wrong = "";
private int number;
private static final char a = '?';
private static final char b = ' ';
public Hangman(String s){ this.in = s;
for (int i = 0; i < in.length(); i++) {
if(in.charAt(i) == ' '){
out += b;
}
else{
out += a;
}
}
this.out = out;
}
public boolean gameOver() { if(in.equals(out1)){
return true;
}
return false;
}
public void guess(char a) { number++;
for (int i = 0; i < in.length(); i++) {
if(in.charAt(i) == a){
out1 += Character.toString(a);
}
else{
out1 += Character.toString('?'); }
} }
public int getNumberOfGuesses() { return number;
}
@Override
public String toString(){
String s = "";
if(number == 0){
s = out;
}
else{
s = out1;
}
return s;
}
}
展开