Java:每隔n秒计算一次来自InputStreamReader的连续打印数字的总和?

时间:2016-10-10 14:43:25

标签: java string inputstream bufferedreader

我使用InputStreamReader从shell终端检索值,这些值在运行时不断产生输出。

现在,我使用子字符串System.out.println(inputStr.substring(inputStr.lastIndexOf(" ")+1));将结果打印到控制台,因为它将打印输出的最后一位数字。

如果输出连续运行,每秒可能打印1次,那么如何每隔N秒将Java代码编写为所有打印数字的总和?(让我们说20分钟是好的测量值)?

到目前为止,这是源代码:

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

public class fooShell {

    public static void main(String[] args) {

        InputStreamReader isReader = new InputStreamReader(System.in);
        BufferedReader bufReader = new BufferedReader(isReader);
        while(true){
            try {
                String inputStr = bufReader.readLine();
                if(inputStr == null) {
                    break;
                }
                    System.out.println(inputStr.substring(inputStr.lastIndexOf(" ")+1));     
            }
            catch (Exception e) {
                System.err.println("Error "+e);
            }
        }
   }

}

1 个答案:

答案 0 :(得分:1)

将持续更新的sum存储为类变量,并在每次轮询InputStreamReader时更新它。

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

public class FooShell
{
  int runningTotal;

  FooShell()
  {
    runningTotal = 0;
  }

  public static void main(String[] args)
  {

    FooShell fooShell = new FooShell();
    InputStreamReader isReader = new InputStreamReader(System.in);
    BufferedReader bufReader = new BufferedReader(isReader);
    while (true)
    {
      try
      {
        String inputStr = bufReader.readLine();
        if (inputStr == null)
        {
          break;
        }
        int currentNumber = Integer
            .parseInt(inputStr.substring(inputStr.lastIndexOf(" ") + 1));
        fooShell.runningTotal += currentNumber;
        System.out.println(currentNumber);
      }
      catch (Exception e)
      {
        System.err.println("Error " + e);
      }
    }
  }
}