gpt4 book ai didi

java - 如何解决? java控制台应用程序:System. in.readLine问题:用户看不到他正在输入的内容

转载 作者:行者123 更新时间:2023-12-01 23:48:43 24 4
gpt4 key购买 nike

我正在编写一个简单的java控制台应用程序,其中程序将提示用户输入某些内容,然后程序控件将等待用户输入并对该输入执行某些操作。

问题是:在控制台上输入时,用户看不到他正在输入的内容。我应该做些什么不同的事情,以便用户可以看到他正在输入的内容?(用户在点击“输入”后可以看到他输入的内容)。

我创建了一个 java 独立项目,并使用 netbean 的 ant 命令从命令行构建并运行该项目:

ant run

下面是我的完整代码。操作系统是Windows 7。jdk版本:1.6

下面是我用来从控制台获取用户输入的代码。

import java.io.*;

public class StatLibraryTest {


public static void main(String[] args) {
String CurLine = ""; // Line read from standard in


try{

while (!(CurLine.equals("quit"))){
System.out.println("Enter: " );
CurLine = readLine();

if (!(CurLine.equals("quit"))){
System.out.println("You typed: " + CurLine);
}
}
}catch(Exception e){
System.out.println(e.getMessage());
}

}


public static String readLine()
{
String s = "";
try {
InputStreamReader converter = new InputStreamReader(System.in);
BufferedReader in = new BufferedReader(converter);
s = in.readLine();
} catch (Exception e) {
System.out.println("Error! Exception: "+e);
}
return s;
}
}

最佳答案

字符回显通常由操作系统的终端驱动程序或(在现代系统中)终端仿真器处理。它的发生独立于 Java ...或应用程序编写的任何其他内容...除非应用程序已关闭字符回显或其他内容。

所以...

我们需要您解释如何运行导致连接到System.in的控制台进入“无回显”模式的应用程序。 p><小时/>

我不知道这是否是您问题的原因,但您的 readLine 方法不正确。每次调用readLine时,它都会为System.in创建一个新的InputStreamReaderBufferedReader。这是低效的。但更糟糕的是,它很容易丢失输入。您会看到,当调用 in.readLine() 时,输入堆栈将对 System.in 进行 read 调用,以读取所有输入目前可用。如果有多行可用(因为用户已提前输入...或者因为使用从文件重定向的标准输入调用应用程序),则您最终可能会在 BufferedReader 中得到多行的缓冲区。 readLine() 调用返回第一行...但其余部分被丢弃

处理 EOF 的方式也存在一个错误。 in.readLine 调用在看到 EOF 时将返回 null,但您没有处理它。

<小时/>

我怀疑您没有得到回显的原因与您使用 Ant 运行程序的方式有关。尝试直接从命令行运行程序;即运行 java StatLibraryTest

<小时/>

最后,您的代码存在一些样式问题:

  • 您的标识符 (CurrLine) 违反了 Java 标识符名称规则。
  • 缩进不一致
  • 您对嵌入空格的使用不一致
  • 捕获异常通常是一个坏主意。捕获您期望的特定异常(例如 IOException)。
  • 如果您的代码无法用异常做一些明智的事情,那么最好让异常传播。具体来说,如果 readLine 捕获异常,调用者将得到一个空字符串。它无法将其与有效输入区分开来;例如用户输入一个空行。您应该将 readLine 声明为 throws IOException

关于java - 如何解决? java控制台应用程序:System. in.readLine问题:用户看不到他正在输入的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16621087/

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