Я хочу, чтобы строка "Enter character: "
была напечатана, затем возьмите входной символ и назначьте его, а затем сохраните повторную настройку до тех пор, пока не будет введен вход -
или ?
. Тем не менее, "Enter character: "
печатается несколько раз после первого ввода после его первоначальной печати. Ввод '?'
или '-'
также не выходит из цикла.Почему линия печатается несколько раз?
Вот метод:
private void runPrompt() {
Deque<Character> first = new Deque<Character>();
Deque<Character> second = new Deque<Character>();
BufferedReader reader = new BufferedReader(new InputStreamReader(
System.in));
char userChar = 0;
int firstWord = 0;
int secondWord = 0;
boolean isMinus = false;
while (!isMinus) {
System.out.print("Enter character: ");
try {
userChar = (char) reader.read();
System.out.println(userChar);
first.enqueue(userChar);
firstWord++;
if (userChar == '-') {
isMinus = true;
}
} catch (QueueException e) {
System.out.println(e.toString());
} catch (IOException e) {
e.printStackTrace();
}
}
if (isMinus) {
while (userChar != '?') {
System.out.print("Enter character: ");
try {
userChar = (char) reader.read();
System.out.println(userChar);
second.enqueue(userChar);
secondWord++;
} catch (QueueException e) {
System.out.println(e.toString());
} catch (IOException e) {
e.printStackTrace();
}
}
}
switch (checkLength(firstWord, secondWord, isMinus)) {
case 0:
System.out.print("\t>>Same length, ");
if (checkContent(first, second)) {
System.out.print("Same content, ");
if (checkPalindrome(first, firstWord)) {
System.out.println("Palindrome");
}
} else {
System.out.println("Different content, no Palindrome");
}
break;
case 1:
System.out
.println("\t>>Left longer, different content, no Palindrome");
break;
case 2:
System.out
.println("\t>>Right longer, different content, no Palindrome");
break;
case 3:
System.out.println("\t>>No minus");
default:
break;
}
}
Вот как пример вывода:
Enter character: r
r
Enter character:
Enter character:
Enter character:
очистить буфер после прочтения одной строки с помощью 'readLine()' –
'if (userChar == '-') {isMinus = true; } 'должно быть написано' isMinus = userChar == '-'; ' –
@JarrodRoberson Я использую' .equalsIgnoreCase() ' – Abdul