这是我写的代码,但是当我运行它时,它并没有让我有机会玩游戏。 它应该像Hangman游戏一样工作。
这是课程代码。
package assignment2q4;
import java.util.ArrayList;
public class Assignment2Q4
{
private final ArrayList<Character> guessList = new ArrayList<>();
private final char[] charArray;
private final String secretWord;
private int guesses;
public Assignment2Q4(String word)
{
guesses = 0;
secretWord = word;
charArray = secretWord.toCharArray();
// TODO code application logic here
}
public void makeGuess(char c)
{
guessList.add(c);
guesses += 1;
}
public int getGuessCount()
{
return guesses;
}
public String getSecretWord()
{
return secretWord;
}
public String getDisguisedWord()
{
char[] disguisedWord = new char[secretWord.length()];
for(int i = 0; i < secretWord.length(); i++)
disguisedWord[i] = '?';
String aWord = "";
char c;
for(int i = 0; i < guessList.size(); i++)
{
c = guessList.get(i);
for(int j = 0; j < charArray.length; j++)
{
if(c == charArray[j])
disguisedWord[j] = c;
}
}
for(int i =0; i < secretWord.length(); i++)
if(disguisedWord[i] == ' ')
disguisedWord[i] = '?';
for(int i = 0; i < secretWord.length(); i++)
aWord = aWord + disguisedWord[i];
return aWord;
}
public boolean isFound()
{
boolean correct = true;
for(int i = 0; i < guessList.size(); i++)
if(guessList.get(i) != charArray[i])
correct = false;
return correct;
}
}
这是我的程序代码。
package assignment2q4;
import java.util.Scanner;
public class HangmanDemo
{
public static void main(String[] args)
{
String answer = " ", hiddenWord = " ";
String guess;
Scanner keyboard;
keyboard = new Scanner(System.in);
System.out.println("Enter the secret word: ");
answer = keyboard.next();
Assignment2Q4 hangman = new Assignment2Q4(answer);
while(!hangman.isFound())
{
System.out.println("Guess a letter: ");
guess = keyboard.next();
hangman.makeGuess(guess);
hiddenWord = hangman.getDisguisedWord();
System.out.println(hiddenWord);
}
}
}
输出只是说:
&#34;输入密码。&#34;
然后我输入一个单词,程序说它成功运行而没有让我有机会玩。
答案 0 :(得分:4)
让我们来看看你的主要条件循环:
public boolean isFound()
{
boolean correct = true;
for(int i = 0; i < guessList.size(); i++)
if(guessList.get(i) != charArray[i])
correct = false;
return correct;
}
第一次加载课程时,请查看guessList.size();
,您没有加载猜测。这意味着您的尺寸有效0
。
让我们回到你的主循环:
Assignment2Q4 hangman = new Assignment2Q4(answer);
while(!hangman.isFound())
哎呀! while(!hangman.isFound())
是false
,其中包含空猜测列表。你永远不会进入你的循环!
您需要重新考虑isFound()
以使用空列表,或者您需要在主循环中使用do ... while()
,如下所示:
do
{
System.out.println("Guess a letter: ");
guess = keyboard.next();
hangman.makeGuess(guess);
hiddenWord = hangman.getDisguisedWord();
System.out.println(hiddenWord);
}
} while(!hangman.isFound())
祝你好运!