Java 如何使用缓冲读取器将预先确定的文本设置为用户输入?

Java 如何使用缓冲读取器将预先确定的文本设置为用户输入?,java,Java,基本上,我如何要求用户输入一个从一开始就给出一个默认值供用户编辑。例如,在文本字段中已键入默认值“1”时,要求用户给出一个值。如果您使用的是控制台,则该值无效。它只读取通过输入流实际输入的内容。您可以显示“1”,但这是输出,而不是输入。另外,不要期望他们能够删除“1” 如果他们不输入任何内容,您可以假设一个默认值。 您还可以收集他们的输入,并在读取后在字符串的开头粘贴1 另外,为什么要这样做?在BufferedReader上调用readLine()方法不会创建类似于GUI应用程序中文本输入的“文

基本上,我如何要求用户输入一个从一开始就给出一个默认值供用户编辑。例如,在文本字段中已键入默认值“1”时,要求用户给出一个值。

如果您使用的是控制台,则该值无效。它只读取通过输入流实际输入的内容。您可以显示“1”,但这是输出,而不是输入。另外,不要期望他们能够删除“1”

如果他们不输入任何内容,您可以假设一个默认值。 您还可以收集他们的输入,并在读取后在字符串的开头粘贴1

另外,为什么要这样做?

在BufferedReader上调用
readLine()
方法不会创建类似于GUI应用程序中文本输入的“文本字段”

从理论上讲,您想要做的事情可以使用一个库,例如。您必须编写一个方法,该方法在初始化为包含默认值的字符堆栈中跟踪“输入”。然后打印默认值,并逐个读取按键:

  • 对于大多数按键,将按下的键按到堆栈中,然后打印,使其显示在控制台上
  • 按下退格键时,从堆栈中弹出并打印
    \b
    转义序列,以模拟控制台中的退格
  • 在enter键上,停止读取按键,打印
    \n
    ,并以字符串形式返回堆栈内容
此解决方案将不具有跨平台兼容性,因为没有跨平台的方法来执行非缓存控制台输入,并且某些控制台(例如内置于Eclipse中的控制台)无法正确处理
\b

拥有默认选项的更简单、几乎肯定更好的方法就是告诉用户默认值是什么,让他们按“回车”而不键入任何内容来获得默认值