为什么在信中每个e打印4次?似乎无法想到它为什么这样做。提示非常有用。
randW
是一个随机的12个字符组成一个文本文件。
private char guess;
private String randW;
private int randNum;
private StringBuilder hiddenW = new StringBuilder("............");
void play() {
for (int i = 0; i < 10; i++) {
System.out.println("Geef de letter die je wilt raden: ");
guess = sc.nextLine().toUpperCase().charAt(0);
for (int ii = 0; ii < randW.length(); ii++) {
if (guess == randW.charAt(ii)) {
hiddenW.setCharAt(ii, guess);
System.out.println(hiddenW);
System.out.println("Aantal fouten: " + wrongG);
}
}
}
}
随机字是GERESTOREERD
This is the Output
Geef de letter die je wilt raden: GERESTOREERD
e // user input is e
.E..........
.E.E........
.E.E....E...
.E.E....EE..
Geef de letter die je wilt raden: GERESTOREERD
r // user input is r
.ERE....EE..
.ERE...REE..
.ERE...REER.
Geef de letter die je wilt raden: GERESTOREERD
答案 0 :(得分:0)
我认为你想为每个猜测输出一行输出。为此,只需将打印线移到内环外。如果您只想在找到至少一个字母时打印,请使用标记:
void play() {
for (int i = 0; i < 10; i++) {
System.out.println("Geef de letter die je wilt raden: ");
guess = sc.nextLine().toUpperCase().charAt(0);
boolean hit = false;
for (int ii = 0; ii < randW.length(); ii++) {
if (guess == randW.charAt(ii)) {
hiddenW.setCharAt(ii, guess);
hit = true;
}
}
if (hit) {
System.out.println(hiddenW);
System.out.println("Aantal fouten: " + wrongG);
}
}
}
答案 1 :(得分:0)
在第二次猜测后看看输出,你会发现一个简单的模式:
'e'在单词中出现4次,到目前为止猜测的单词被打印4次,'r'出现3次,单词被打印3次。并且每次打印都会显示该单词的另一个字符。
原因是这段代码:
for (int ii = 0; ii < randW.length(); ii++) {
if (guess == randW.charAt(ii)) {
hiddenW.setCharAt(ii, guess);
System.out.println(hiddenW);
System.out.println("Aantal fouten: " + wrongG);//the printed line
}
}
每次找到与猜测的字符匹配的字符时,都会更新缓冲区并打印新猜测的字。但是对于每个找到的字符一次,因为它在更新缓冲区的同一个块内。将print-command移出循环,事情应该可以正常工作:
for (int ii = 0; ii < randW.length(); ii++) {
if (guess == randW.charAt(ii)) {
hiddenW.setCharAt(ii, guess);
}
}
System.out.println(hiddenW);
System.out.println("Aantal fouten: " + wrongG);