我正在用灯笼制作一个简单的基于 java 文本的刽子手(主要是因为控制台中的清晰屏幕和用户输入)。
我的用户输入有问题:一旦我输入输入并通过代码运行它,它每次都会再次使用相同的输入,我无法再插入另一个输入。
这是我的代码:
while (hidenWord.equals(word) == false) {
//start of basic visual setup
terminal.moveCursor(0,0);
cursorPlace[0] = 0;cursorPlace[1] = 0;
normalSetup(hidenWord, kansen, choose[categorie]);
terminal.moveCursor(12, cursorPlace[1] - 3);
//end of basic visual setup
while (bool == false) {
Thread.sleep(5);
Key key = terminal.readInput();
try {
if (key.getKind() == Key.Kind.NormalKey) {
guess = (key).toString().substring(key.toString().lastIndexOf(' '));
terminal.putCharacter(key.getCharacter());
}
} catch (Exception err) {
}
try {
if (key.getKind() == Key.Kind.Backspace) {
terminal.clearScreen();
terminal.moveCursor(0, 0);
cursorPlace[0] = 0;
cursorPlace[1] = 0;
normalSetup(hidenWord, kansen, choose[categorie]);
terminal.moveCursor(12, cursorPlace[1] - 3);
}
} catch (Exception err) {
}
try {
if (key.getKind() == Key.Kind.Enter && guess != null) {
bool = true;
}
} catch (Exception err) {
}
}
if(word.contains(guess)){
guesses.add(guess);
hidenWord = addHidden(guess, word);
}else{
kansen --;
miss.add(guess);
}
//end of other visual objects
}
谢谢!
最佳答案
while (hidenWord.equals(word) == false) { // ... while (bool == false) { // ... try { if (key.getKind() == Key.Kind.Enter && guess != null) { bool = true; }
第一次看到“Enter”时,将 bool
设置为 true,
之后您再也不会将其重置回 false
。
因此,在外层 while
循环的下一次迭代中,
bool
为 true
,因此不会再次进入内部 while
循环。
根本不使用 bool
会更简单、更好:
while (true) {
// ...
try {
if (key.getKind() == Key.Kind.Enter && guess != null) {
break;
}
关于java - 灯笼终端输入不断重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32208798/