java STDIN中的扫描仪nextLine()

时间:2012-09-17 22:57:04

标签: java java.util.scanner

我们的教授让我们做一个实验室来解析字符串。他拒绝让我们使用文件,并说如果他复制并粘贴一段字符串,我们必须解析它。我的问题是我不确定如何在复制和粘贴时从STD获取数据(我可以用文件更容易地完成此操作)。

public static void main(String[] args)
  {
    Scanner finput;
    String input;
    System.out.println("Enter Data: ");
    finput = new Scanner(System.in);

    input = finput.nextLine();
            System.out.println("OUTPUT")
    System.out.println(input);
    System.out.println(input.length());
    while(finput.hasNextLine())
    {
        input = finput.nextLine();
        System.out.println(input);
    }
  }

这是我到目前为止唯一的问题是当我将一个段落复制并粘贴到控制台(使用eclipse)时,除非我按回车键,否则它不会抓住最后一行。如果我再次键入内容并按Enter键,则前一行将与新条目连接,如下所示。

Enter Data:
FirstLine
SecondLineOUTPUT
FirstLine
junk
SecondLinejunk

如果输入只是一行一行,我就不会遇到这个问题而且我也不确定为什么如果我复制粘贴它不需要我按Enter键进行....

3 个答案:

答案 0 :(得分:1)

没有办法做你想的事情,因为输入流无法知道线的“结束”是什么,除非你按回车。

考虑一下你是否要输入文字:

ABCD
EFGH

但你真的只是意味着第二行是EFG,而不是EFGH。怎么可能有办法确定呢?复制+粘贴就像实际打字一样,速度更快。

我猜你的教授会在你的段落末尾点击回车键。

答案 1 :(得分:0)

您只需通过发送EOF字符(Unix / Linux中的CTRL + D或Windows中的CTRL + Z)告诉控制台您已完成输入。

答案 2 :(得分:0)

正在复制时..再复制一个白色空间,作为输入!!