0
我一直坚持这段代码一段时间了,并会真正感谢一些帮助。所以基本上我的hang子手代码运行良好,但控制台中的显示器,破折号应该反映哪些字母已被正确猜测,哪些字母仍然被猜到是完全错误的。我会在这里发布我的代码。由于时间很长,我只会发布相关的方法。我觉得问题出在显示器阵列列表上,我无法持续更新。爪哇Hang子手代码
public void play() {
String SecretWord = getWord();
ArrayList <String> lettersInWord = new ArrayList <String>();
for (int i=0;i<SecretWord.length();i++){
lettersInWord.add(Character.toString(SecretWord.charAt(i)));
}
int remainingChances = getNumberGuesses();
int noOfLetters = SecretWord.length();
ArrayList<String> lowerCaseAlphabets = getAlphabetArrayList();
ArrayList<String> display = new ArrayList<String>();
for (int i = 0; i<noOfLetters; i++) {
display.add("_");
}
System.out.println(printDisplay(display));
Set <String> lettersGuessed = new HashSet<String>();
while (remainingChances > 0){
String question = readString("What letter do you want to guess?");
if (lowerCaseAlphabets.contains(question)){
System.out.println("Number of misses remaining equals "+remainingChances+"");
int index = lettersInWord.indexOf(question);
if (index== -1){
lettersGuessed.add(question);
remainingChances-= 1;
if (remainingChances==0){
System.out.println("No "+question+". You lose! The secret word was "+SecretWord+"");
}
else if (remainingChances>0){
System.out.println("There is no "+question+" in the word");
System.out.println(printDisplay(display));
System.out.println("Guesses so Far :"+lettersGuessed+"");
}
}
else if (index!=-1){
while (index!= -1){
display.set(index, question);
System.out.println(printDisplay(display));
System.out.println("Guesses so Far :"+lettersGuessed+"");
lettersInWord.remove(index);
if (lettersInWord.size()==0){
System.out.println("You have won! Congratulations!");
return;
}
else if (lettersInWord.size()!=0){
index = lettersInWord.indexOf(question);
}
}
}
}
else {
System.out.println("The letter you have chosen in invalid. You must pick a lower case letter from the alphabet!");
}
}
}
public String printDisplay(ArrayList<String> display){
String View = "";
for (int i =0;i<display.size();i++){
View+= display.get(i) + " ";
}
return View;
}
虽然我似乎仍然遇到同样的问题。 – user2904796
请勿删除'lettersInWord'中的任何内容。只需用'null'替换建立索引中的字符即可。这会让你的索引正确,同时阻止'indexOf'找到任何已经建立的字符。 – regulus
因此,如果我使用lettersInWord.set(index,null),当我使用lettersInWord.size()调用时,是否会计算空元素? – user2904796