我一直在处理我的刽子手程序,并且无法弄清楚为什么它不会替换用星号输入的字符。
我还没有添加很多细节,所以请不要坐在这里判断。我需要有人告诉我为什么用户输入的字符不会替换星号,如果你知道我可以做些什么来修复它,请告诉我。
我正在挣扎。我编辑了我的程序,告诉你我知道逻辑错误来自哪里,但我不知道错误是什么。 String hiddenWord = wordList[rand];
char[] asterisks = new char[MAXCHAR];
hideWord(hiddenWord);
System.out.println(Arrays.toString(hideWord(hiddenWord)));
numGuess( hiddenWord,asterisks);
public static char[] hideWord(String hiddenWord)
{
int wordLength = hiddenWord.length();
//int length = wordLength * 2;
char[] asterisks = new char[wordLength];
for(int i=0; i < wordLength; i++)
{
asterisks[i] = '*';
}
return asterisks;
}
public static void numGuess(String hiddenWord,char[] asterisks)
{
Scanner keyboard = new Scanner(System.in);
hideWord(hiddenWord);
int remAttempts = MAXGUESS;
int i = 0;
while(i < (hiddenWord.length()-1))
{
System.out.println("Enter a letter or 9 to quit");
char guess = keyboard.next().charAt(i);
if(asterisks[i] == (hiddenWord.charAt(i)))
{
//attemtps == hiddenWord.charAt(i);
System.out.println("Nice job!");
remAttempts--;
}
i++;
}
}
答案 0 :(得分:1)
看看这段代码(我稍微改变了格式):
while (i < hiddenWord.length() - 1) {
System.out.println("Enter a letter or 9 to quit");
char guess = keyboard.next().charAt(i);
//...
i++;
}
您要求提供一封信,但您确实要求一个至少大小为+ 1的字符串等于i
:keyboard.next().charAt(i);
。因此,如果你只写一个字母,那么你将在该循环的第二次迭代中得到一个异常。
我猜你的意思是:keyboard.next().charAt(0);
。这将返回给定String的第一个字符。
如果这没有解决问题,那么提供整个Stacktrace并在代码中标记出现异常的行。