gpt4 book ai didi

java - 扫描仪 i java 不适用于所有输入

转载 作者:行者123 更新时间:2023-12-01 10:49:56 25 4
gpt4 key购买 nike

我想从控制台读取一些内容(长,字符串),但我不知道为什么,例如,只有几个第一个输入有效,然后对其他人不起作用:下面是我正在谈论的代码,它不要求地址

    public void getInfo(PhoneBook PB)
{
Scanner keyboard = new Scanner(System.in).useDelimiter("\n");
String c1 = "yes";
do {

System.out.print("Name:");
PB.setName(keyboard.nextLine());
System.out.print("Family:");
PB.setFamily(keyboard.nextLine());
System.out.print("Address:");
PB.setAddress(keyboard.nextLine());
System.out.print("Number:");
PB.setNumber(keyboard.nextLong());

System.out.println("Do you want to continue(yes/no)");
c1 = keyboard.nextLine();
phoneBooks.add(PB);
}while (c1.equals("yes"));
}

提前致谢

最佳答案

当您调用 nextLong() (或 nextInt()nextDouble()next() ...),您正在使用扫描仪读取 token ,但没有读取行尾(EOL) token ,因此使其悬空。然后,这个悬空的 EOL token 将在您下次调用 nextLine() 时立即被捞起,因此该调用将无法获取用户的输入,从而使您的程序变得困惑。要解决此问题,请在获取 nextLong() 后添加对 nextLine() 的额外调用,忽略返回的任何结果,因为它只是 EOL token 。

所以改变这个:

System.out.print("Number:");
PB.setNumber(keyboard.nextLong());

System.out.println("Do you want to continue(yes/no)");
c1 = keyboard.nextLine();

对此:

System.out.print("Number:");
PB.setNumber(keyboard.nextLong());

keyboard.nextLine(): // **** add this ****

System.out.println("Do you want to continue(yes/no)");
c1 = keyboard.nextLine();

关于java - 扫描仪 i java 不适用于所有输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33972030/

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