打印char数组输出空盒子?

时间:2016-03-19 16:47:11

标签: java arrays

我正在尝试在我的程序中打印出一个char数组,但在我的控制台中,该数组显示为5个框。

我的代码是一个猜谜游戏,拿一个字母并扫描inputArray(char)进行匹配。如果匹配,则将正确猜到的字母添加到currentGuessArray中的相应位置。我没有正确填充数组吗?

for (int i = 0; i == lengthOfWord; i++) {
    if (guess.charAt(0) == inputArray[i]) {
        currentGuessArray[i] = guess.charAt(0);
    }
}
System.out.println(currentGuessArray);

这就是我目前正在输出的内容

Current console ouput

我的完整代码是

public class Console {
 static String input = "";

public static String get() {
    @SuppressWarnings("resource")
    System.out.println("Enter the word to guess");
    Scanner s = new Scanner(System.in);
    input = s.nextLine();
    return input;
      }
   }


public class WordGuess {

 public static void guess() {

    Scanner s = new Scanner(System.in);
    String guess;
    int trys = 0;

    String input = ConsoleView.input;
    int length = input.length();
    char[] inputArray = input.toCharArray();

    boolean[] currentGuess = new boolean[length];
    char[] currentGuessArray = new char[length];

    while (currentGuessArray != inputArray) {
        System.out.println("Key in one character or your guess word:");
        trys++;
        guess = s.nextLine();
        int guessLength = guess.length();


        if (guessLength == 1) {
            for (int i = 0; i == length; i++) {
                if (guess.charAt(0) == inputArray[i]) {
                    //currentGuess[i] = true;
                    currentGuessArray[i] = guess.charAt(0);
                }

            }
            System.out.println(Arrays.toString(currentGuessArray));

        } else if (guess.equals(input)) {
            System.out.println("You're correct!");
            break;
        }

        else if (currentGuessArray == inputArray) {
            System.out.println("Congratulations, you got the word in " + trys);
        }
    }

   }
}

3 个答案:

答案 0 :(得分:1)

它不起作用,因为你的for循环永远不会循环:

for (int i = 0; i == length; i++)

for中的第二个表达式是循环继续的条件。因此,在这种情况下,i == length会立即为false,并且循环永远不会运行,这就是您的数组currentGuessArray中包含错误值的原因。

将其更改为:

for (int i = 0; i < length; i++)

你应该对那个没问题。

顺便说一下,你的while循环也会永远执行。 (currentGuessArray != inputArray)始终为false,因为这些是引用,!=比较引用。您需要比较数组的元素以查看它们是否相同。 (我很确定Arrays中有一种方法可以做到这一点。)

答案 1 :(得分:0)

如果要在char表示中打印String数组,则需要从String数组中创建char对象。

试试这个:

String.valueOf(currentGuessArray);

答案 2 :(得分:0)

您可以尝试Arrays.toString()

System.out.println(Arrays.toString(currentGuessArray));

另外,请确保您使用的是字母字符,而不是其他随机字符。

你可以找到这样的

for (char c : currentGuessArray) {
    if (!Character.isLetter(c)) {
        System.out.println("Error !, currentGuessArray contains other characters than letters);
    }
}