gpt4 book ai didi

Java 扫描器在循环期间不阻塞

转载 作者:行者123 更新时间:2023-11-29 09:06:22 27 4
gpt4 key购买 nike

我遇到了一个问题,即 Scanner 在无限期 while 循环期间没有阻止用户输入。我试过使用 hasNextLine() 但没有用。它只是运行无限调用 displayMenu() 的循环。

     do {

displayMenu();

int response;
while (iStream.hasNextLine()) {
response = Integer.parseInt(iStream.nextLine());

switch (response) {
case 1:
decodeMessage(getPhrase());
break;
case 2:
encodeMessage(getPhrase());
break;
case 3:
displayAlphabet();
break;
case 4:
done = true;
System.out.println("Goodbye.");
break;
default:
done = false;
}
}

}
while (!done);

我也尝试过不使用 hasNextLine() 但我最终得到了一个 NoSuchElementException 因为它第一次完美运行但在第二次迭代中,它没有' 用于用户输入的 block 。

    do {

displayMenu();

int response = Integer.parseInt(iStream.nextLine());

switch (response) {
case 1:
decodeMessage(getPhrase());
break;
case 2:
encodeMessage(getPhrase());
break;
case 3:
displayAlphabet();
break;
case 4:
done = true;
System.out.println("Goodbye.");
break;
default:
done = false;

}

}
while (!done);

有什么想法吗?

最佳答案

以下对我来说效果很好:

private static void displayMenu ()
{
System.out.println ("Menu:");
System.out.println ("\t1: Decode message");
System.out.println ("\t2: Encode message");
System.out.println ("\t3: Display alphabet");
System.out.println ("\t4: Exit");
}

public static void main (String [] args)
{
Scanner scanner = new Scanner (System.in);

boolean done = false;
while (!done)
{
displayMenu();

switch (Integer.parseInt (scanner.nextLine ()))
{
case 1:
System.out.println ("Decoding...");
break;
case 2:
System.out.println ("Encoding...");
break;
case 3:
System.out.println ("Displaying alphabet...");
break;
case 4:
System.out.println("Exitting...");
done = true;
break;
default:
done = false;
}
}
}

关于Java 扫描器在循环期间不阻塞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14790142/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com