gpt4 book ai didi

java - BufferedReader 循环中出现错误

转载 作者:行者123 更新时间:2023-12-02 07:47:32 26 4
gpt4 key购买 nike

第一次这个循环迭代效果很好,但在我按字符“y”以重复之后,下次显示时,它不会让我输入另一个名称。我不知道是什么原因造成的,但是当你需要清除输入缓冲区时,它让我想起了 C。

任何帮助我们都将不胜感激。

byte counter = 1;
boolean myCondition = false;
List<String> myList = new ArrayList();
BufferedReader objReader = new BufferedReader(new InputStreamReader(System.in));

do{
System.out.println("Enter the #" +counter +" person's name:");
// low quality validation
String dude = objReader.readLine();

while (myList.contains(dude)){
System.out.println("Man, this dude:" +dude +" is already loaded into the List! Pick another name:\n");
dude = objReader.readLine();
}

myList.add(dude);
counter++;
System.out.println("Would you like to add another name to the list? yes/no");

char myChar = (char) System.in.read();

if (myChar == 'y' || myChar == 'Y')
myCondition = true;
else
myCondition = false;

} while (myCondition);

最佳答案

看看你的代码:

  1. 您读到了字符“y”
  2. char myChar = (char) System.in.read(); 会等待,直到您按 Enter
  3. myChar 现在是“y”。这会将“\n”(“Enter”)留在缓冲区中
  4. Next String dude = objReader.readLine(); 读取缓冲区中已存在的以“\n”结尾的行。

您应该阅读整行而不是简单的read()

如果你想要更好的 y 分辨率:

String line = objReader.readLine();
myCondition = line.startsWith("Y") || line.startsWith("y");

关于java - BufferedReader 循环中出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10623557/

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