#java #string #inputstream #bufferedreader
#java #строка #inputstream #bufferedreader
Вопрос:
Я использую InputStreamReader для извлечения значений из терминала оболочки, который постоянно выдает вывод во время работы.
Прямо сейчас я печатаю результат на консоль с помощью substring: System.out.println(inputStr.substring(inputStr.lastIndexOf(" ") 1));
, поскольку он будет печатать последние цифры вывода, которые мне нужны.
При непрерывном выводе, возможно, с 1 печатью в секунду, как мне написать Java-код для суммирования всех напечатанных чисел каждые N секунд?(скажем, 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:
Сохраняйте постоянно обновляемую сумму как переменную класса и обновляйте ее каждый раз при опросе 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);
}
}
}
}
Комментарии:
1. У вас было бы это внутри main? Кроме того, как бы вы заставили его печатать сумму каждые N секунд? Также я не вижу, чтобы вы когда-либо использовали значение «MyClass»?
2. Без понятия, как выглядит ваш код, очень сложно дать вам больше указаний. Где бы ни находился ваш код в данный момент, который выводит результат на консоль, просто необходимо обновить переменную sum. MyClass — это общее имя класса, а не значение, которое будет использоваться.