Задача "Суммирование". Условие: Считывать с консоли числа до тех пор, пока не введут слово "Enter" и посчитать сумму введенных слов
public static int sum2 (Scanner in) {
        String next = "";
        int res = 0;

        while (in.hasNext()) {
            next = in.next();
            System.out.print(next + " ");
            System.out.println(in.hasNext()); //добавил просто в качестве проверки того, что происходит при выполнении кода
            if (!next.equalsIgnoreCase("ENTER")) {
                res += Integer.parseInt(next);
            }
        }

        if (!(next.equalsIgnoreCase("ENTER"))) {
            System.out.println("Invalid enter");
            return -1;
        }

        return res;
    }
public static void main(String[] args) {
        Scanner in2 = new Scanner (System.in);
        System.out.println(sum2(in2));

    }
Не понимаю, почему, в тот момент, когда сканнер считывает в переменную String next последний элемент из консоли, то метод next.hasNext() не выдает результат false, вместо этого выполнение программы останавливается. Ведь после того, как сканнером считано последнее из введенных слов, то next.hasNext() должен сказать, что дальше считывать нечего (т.е. вернуть false). А по факту в этот момент программа останавливается и почему то снова ожидает ввод данных в консоль. И что еще интересно. Если я в Scanner in передаю не (System.in), а заранее заготовленную строку такого же вида, как требуется в условиях задачи, то все работает.