0

例如,在 java 中,要从控制台读取输入,您可以编写如下内容:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class ReadConsoleSystem {
  public static void main(String[] args) {

    System.out.println("Enter something here : ");

    try{
        BufferedReader bufferRead = new BufferedReader(new InputStreamReader(System.in));
        String s = bufferRead.readLine();

        System.out.println(s);
    }
    catch(IOException e)
    {
        e.printStackTrace();
    }

  }
}

所以在这一行String s = bufferRead.readLine()中,代码只是等待输入进来,然后进入下一步,但是如果你想看一个连续的字符串流,试图解析出它的片段,例如,读取一个流Twitter 状态,并且只保存其中包含“奥巴马”一词的那些?

我不明白代码如何逐行执行,同时处理来自流的输入,然后突然检测何时给出输入并保存它。

4

3 回答 3

1

bufferRead.readLine(); 在用户按下返回键之前,不会返回调用代码。

于 2012-08-07T15:39:37.420 回答
0

控制台是行缓冲的。这意味着一整行都是 Java 进程一次,所以它看不到你写字符或回退空格来删除它们等。

我怀疑你不需要看看它是如何做到的。也许您可以描述您要解决的问题?

于 2012-08-07T15:38:40.183 回答
0

那里的代码写入仅设置为从系统输入(即控制台)读取一行输入。它的设置是,当您执行 readLine 时,它​​将从输入中读取一行。你必须输入一些东西(“Hello there”)并按回车键,它会接受它,并将其放入 String s。如果要解析内容,请在后面手动进行

if(s.contains("Obama")) {
    //blah
}
于 2012-08-07T15:32:29.047 回答