我正在尝试在我的程序中打印出一个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);
这就是我目前正在输出的内容
我的完整代码是
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);
}
}
}
}
答案 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);
}
}