将已打印的值更新到终端并在Java中读取

时间:2018-12-18 21:14:32

标签: java terminal console

我需要为操作员创建一些简单的界面来验证一些字符串。我想最简单的方法是在控制台中完成。

有后续步骤:

  • 字符串已打印到控制台上
  • 操作员检查它。如果字符串正确,操作员单击enter,如果有错误,则他更新已打印的字符串并单击enter。重要的是,运算符不要再次键入字符串,因为它可能很长。
  • 操作员看到新的字符串,等等。

是否可以使用Java中的简单控制台来实现?我尝试像这样使用PipedOutputStreamPipedInputStream

public static void main(String[] args) throws Exception{
    PipedOutputStream pipeOut = new PipedOutputStream();
    PipedInputStream pipeIn = new PipedInputStream(pipeOut);
    System.setIn(pipeIn);

    System.out.print("My string to verify");

    BufferedReader br = new BufferedReader(new InputStreamReader(pipeIn));
    String verified = br.readLine(); 
}

有两个问题:

  • 无法将终端光标中的光标移至已打印的字符串进行编辑
  • 即使我按enter的光标移动到了下一行,看来br.readLine();也没有任何作用。

1 个答案:

答案 0 :(得分:0)

根据我的理解,这只是String和用户输入之间的游戏,此示例将输入用于User的字符串

import java.io.*;
import java.text.*;
import java.util.*;

public class MyClass {
    private static final Scanner scanner = new Scanner(System.in);
    public static void main(String[] args) throws Exception{
        BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(System.out));
        String s = "My string to verify";
        System.out.println(s); 
        //Do what you need with s;
        //edit it
        String s2 = scanner.nextLine();

        bufferedWriter.write(s2);
        bufferedWriter.close();
        scanner.close();

    }
}