字符数组更新

时间:2014-12-11 18:54:07

标签: java arrays string for-loop

我一直在处理我的刽子手程序,并且无法弄清楚为什么它不会替换用星号输入的字符。

我还没有添加很多细节,所以请不要坐在这里判断。我需要有人告诉我为什么用户输入的字符不会替换星号,如果你知道我可以做些什么来修复它,请告诉我。

我正在挣扎。我编辑了我的程序,告诉你我知道逻辑错误来自哪里,但我不知道错误是什么。

  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++;
      }
  }

1 个答案:

答案 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的字符串等于ikeyboard.next().charAt(i);。因此,如果你只写一个字母,那么你将在该循环的第二次迭代中得到一个异常。

我猜你的意思是:keyboard.next().charAt(0);。这将返回给定String的第一个字符。

如果这没有解决问题,那么提供整个Stacktrace并在代码中标记出现异常的行。