gpt4 book ai didi

java - 从终端捕获 System.in 事件

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

我正在开发一个应用程序,它必须从用户终端接收多条输入,同时优雅地处理无效输入并提示用户重新输入。我的第一个想法是有一个 while 循环,其主体将接受输入并验证其有效性,在获得有效输入时设置一个标志。该标志将标记应用程序所处的阶段,并确定接下来需要什么类型的输入,也将用作循环的终止条件。

虽然功能齐全,但这看起来相当不优雅,我想知道是否有一种方法可以简单地编写一个函数,每当按下返回键时调用该函数以表明有新的输入需要解析。类似的东西

public class Interface {
public void receiveInput( final String input ){
// Parse 'input' for validity and forward it to the correct part of the program
}
}

也许这可以通过扩展一些 Java 类并重新实现它通常处理此类事件的函数之一来实现,但这可能是我的 C++ 背景讨论。

除了构建和单元测试所需的库之外,我不得使用任何外部库。

最佳答案

从控制台读取时,您可以使用 BufferedReader

BufferedReader br = new BufferedReader( new InputStreamReader( System.in));

并通过调用 readLine 函数,它将处理新行:

String readLine = br.readLine();

您肯定可以有一个类,其中有一个读取信息并继续的函数。

这里是示例代码供您引用

public class TestInput {


public String myReader(){
boolean isExit = true;
while (isExit){
System.out.print("$");
BufferedReader br = new BufferedReader( new InputStreamReader( System.in));

try {
String readLine = br.readLine();
if (readLine != null && readLine.trim().length() > 0){
if (readLine.equalsIgnoreCase("showlist")){
System.out.println("List 1");
System.out.println("List 2");
System.out.println("List 3");
} if (readLine.equalsIgnoreCase("shownewlist")){
System.out.println("New List 1");
System.out.println("New List 2");
} if (readLine.equalsIgnoreCase("exit")){
isExit = false;
}
} else {
System.out.println("Please enter proper instrictions");
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
return "Finished";
}

/**
* @param args
*/
public static void main(String[] args) {
System.out.println("Please Enter inputs for the questions asked");
TestInput ti = new TestInput();
String reader = ti.myReader();
System.out.println(reader);
}

这是输出:

Please Enter inputs for the questions asked
$showlist
List 1
List 2
List 3
$shownewlist
New List 1
New List 2
$exit
Finished

希望这有帮助。

关于java - 从终端捕获 System.in 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14663227/

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