gpt4 book ai didi

Java应用程序控制台提示符

转载 作者:行者123 更新时间:2023-12-01 18:41:50 25 4
gpt4 key购买 nike

我编写了以下 Java 代码来显示提示并在命令行上读取一些命令:

try(Scanner keyboard = new Scanner(System.in)) {
while (true) {
System.out.print(">> ");
System.out.flush();
System.out.println(keyboard.nextLine());
}
}

不显示提示符(“>>”)。无论如何,如果我在命令行中输入文本并按 Enter 键,则提示会显示在 println 的输出之前。有什么办法可以强制正确显示提示吗?我的理解是使用flush就足够了。

如果我运行测试,这就是我现在在控制台中看到的内容

test
>> test
this
>> this
again
>> again

如您所见,输入由keyboard.nextLine()读取的文本后会显示提示。

最佳答案

在 Java 中,所有字符串都是字符数组,末尾带有“\0”(也称为空终止字符)。例如,如果我有一个 string str = "hello";,实际上 str 实际上是一个 6 个字符的数组:['h'、'e'、'l'、'l'、'o'、'\0']

flush() 只是删除字符串 ">> " 后面的 '\0'。这里的主要问题是您在提示用户之前让 Scanner 读取输入。要在询问之前进行提示,请将 println() 语句移到顶部。

System.out.println(">> "); //assuming this is your prompt
try(Scanner keyboard = new Scanner(System.in)) {
while (true) {
//some code
}
}

您的另一个选择是将 .nextline(); 更改为 .next();。两者的区别是

  • nextLine(): Advances this scanner past the current line and returns the input that was skipped.
  • next(): Finds and returns the next complete token from this scanner.

有关扫描仪功能的更多引用,您可以阅读它们 here

关于Java应用程序控制台提示符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59917895/

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