我使用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);
}
}
}
}
答案 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);
}
}
}
}