Akshit Gupta Ответов: 2

Java в то время как цикл не завершается!


У меня есть код на Java, для которого цикл while не завершается.. Если я использую файл вместо Std, я получаю правильный результат.. Пожалуйста, укажи мне на мою ошибку.. Код:
public static void main(String args[] ) throws Exception {
    int y;
    int n;
    Scanner sc = new Scanner(System.in);
        int k = sc.nextInt();
        y = 0;
        n = 0;
        while(sc.hasNextLine()){
            String c = sc.next();
            Pattern p = Pattern.compile("[0-9]{1,2}");
            Matcher m = p.matcher(c);
            if(m.matches()){
                if(c.equals("19") || c.equals("20")){
                    y += 4;
                }
                else{
                    n += 3;
                }
            }
        }
System.out.println("Y Is: " + y + "N is : " + n);
System.out.println(y > n ? "Date" : "No Date");

}
Заранее спасибо!

Что я уже пробовал:

Ввода-сканер внутри цикла while!

Richard MacCutchan

Вам нужно добавить проверку для какой-то специальной строки, которая говорит программе, что больше нет ввода.

2 Ответов

Рейтинг:
4

Patrice T

Цитата:
Если я использую файл вместо Std, я получаю правильный результат..

Ваша ошибка в том, что клавиатура никогда не заканчивается, тот факт, что вы ждете перед клавиатурой, не является концом ввода.
В прошлом, когда я делал это в C, конец клавиатуры файла был Ctrl-Z.
Если это не сработает, вам придется подумать о специальном вводе, который будет действовать как конец файла.


Рейтинг:
1

Dave Kreskowiak

МММ... Нет такой вещи, как отсутствие следующей строки, когда ввод идет с консоли.

Вместо того чтобы проверять наличие hasNextLine, вы можете проверить наличие пустой строки, возвращаемой для сигнала выхода или чего-то в этом роде.