gpt4 book ai didi

java - 控制台输入在不应该等待的时候等待

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:08:10 26 4
gpt4 key购买 nike

我刚刚开始使用 Java,并且一直在尝试让控制台输入正常工作。这是代码:

System.out.println("Write a word: ");
Scanner keyboard = new Scanner(System.in);
System.out.println("DEBUG 1");
str = keyboard.nextLine();
System.out.println("DEBUG 2");
System.out.println(str);

这应该只接受一次输入并打印输入,如下所示:

Write a word: 
DEBUG 1
Hello //My input
DEBUG 2
Hello //Output

但这是发生了什么:

Write a word: 
Hello //My input
DEBUG 1
//Waiting for new input
DEBUG 2
Hello //The first input

所以,在我看来,它以某种方式获取行 Scanner keyboard = new Scanner(System.in); 的输入,然后将其放入我的变量 str。我使用gcj编译,编译运行如下命令:

javac hello_world.java
java hello_world

编辑:我现在尝试在另一台计算机上运行该程序,使用 Ubuntu 10.04 64 位,而不是像以前那样使用 Ubuntu 10.04 32 位。我以同样的方式运行它,没有重新编译,程序运行正常。

知道为什么会这样吗?

最佳答案

可能存在刷新/缓冲问题,导致 DEBUG 1 的输出晚于您的预期。即,println("DEBUG 1") 可以在 keyboard.nextLine() 之前执行,但由于某种原因,输出在途中被阻止,直到输出您的输入已被读取。

但我认为您的意思是您实际上必须输入两个换行符,一个在 Hello 之后,一个在“等待新输入”行。如果是这样,这就更难解释了。可能是线路终止不兼容问题。

使用标准 JDK 编译和执行会产生您期望的行为。

关于java - 控制台输入在不应该等待的时候等待,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10498756/

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