【问题标题】:Java Scanner or Buffered ReaderJava 扫描器或缓冲读取器
【发布时间】:2014-06-23 18:14:42
【问题描述】:

我有一个要求,我必须从控制台而不是从文件中读取输入

输入格式如下。我知道我可以使用任何字符退出。但是我不能提供除此之外的任何其他输入。我可以写一些东西,比如等待特定的时间,如果没有输入中断循环或者其他什么方法可以读取我们之前不知道长度的输入。

你好,艾格尼丝
奴才,贝多
向量,收缩射线

以下逻辑将使 readline 永远等待输入并且无济于事,因为我按的每个输入都将再次成为另一个输入字符,并且永远不会结束。

我不想给出任何退出字符来确定输入的结束,例如“退出”。这个怎么处理??

ArrayList<String> emp=new ArrayList<String>();
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
h=br.readLine();
while((h=br.readLine()) != null)
{           
   emp.add(h);         
}

【问题讨论】:

标签: java java.util.scanner bufferedreader


【解决方案1】:

您可以添加一个请求用户输入的线程,然后添加一个在每个新输入上重新开始的计时器。当计时器到期时,它会关闭用户输入线程。

【讨论】:

    【解决方案2】:
        Scanner reader = new Scanner(System.in);
        System.out.println("Enter something: ");
        String s=reader.nextLine();
        System.out.println("You enetered: " + s);
    

    结果:

    Enter something: 
    Mike,Elofson
    You enetered: Mike,Elofson
    

    一般来说,根据我的经验,扫描仪更容易且更常用于输入。

    【讨论】:

    • 我个人每次需要时都使用 BufferedReader 而不是 Scanner 来读取输入,因为我个人在使用 Scanner 时遇到了问题,但 BR 总是按预期工作。
    【解决方案3】:

    一个“”输入(即直接回车),或者两个/三个连续的“”输入。

    我认为等待一段时间不是一个好主意。无论如何,您需要一些输入来指示结束。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-21
      • 1970-01-01
      • 2011-04-20
      • 1970-01-01
      • 2014-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多