Не выходит из цикла в intellij IDEA при считывании клавиатуры через сканер
Надо считать из строки все вещественные через пробел числа и просуммировать их, вывести с 6 знаками после запятой, но это не столь важно, так как задача вроде как решена.
import java.io.*;
import java.util.Scanner;
public class Main {
public static void main(String[] args) throws IOException {
Scanner scanner = new Scanner(System.in);//"a 1 b 2 c 3,4"
double sum = 0;
while(scanner.hasNext()){
if(scanner.hasNextDouble())
sum += scanner.nextDouble();
else
scanner.next();
}
System.out.format("%.6f",sum);// 6.4
}
}
Проблема в том, что из цикла while после того как считается вся строка, и условие scanner.hasNext() не выполнится - программа виснет и не выходит из цикла. При дебаге понятней не становится - просто останавливается, но не завершается программа. В разных онлайн компиляторах все работает как и должно - а IDEA нет, прошу объяснений почему
Ответы (1 шт):
В спецификации написано:
This method may block while waiting for input to scan
Сканер не знает будете ли Вы еще что-то вводить или нет. Поэтому он просто ждет данные из инпутстрима.
В Вашем случае надо либо завершать ввод некой управляющей последовательностью и прекращать исполнение при ее достижении, либо читать данные из файла, а не из консоли, либо завершать ввод Ctrl+D в Linux или Ctrl+Z в Windows.