Когда я перенаправляю свой System.in в файл в Eclipse, как я могу быть уверен, что я прочитал все строки, и ничего, кроме использования Java? - PullRequest
0 голосов
/ 09 апреля 2019

У меня есть своего рода домашнее задание, где мне нужно создать симулятор, который читает строки через System.in и моделирует переходы автомата и печатает их в System.out.

Это оценивается через веб-сервис, поэтому мой код должен работать в совершенно произвольной ситуации, и я предполагаю, что он перенаправляет System.in в их собственный файл и сравнивает их собственный вывод с моим.Пытаясь смоделировать это, я сделал это своими собственными тестами, перенаправив их в собственный файл.

Входные данные разбиты на строки со своим собственным соответствующим значением, а последние собирают переходы.Количество переходов не ограничено.

После нескольких часов отладки и консультаций с моими профессорами и ассистентами я пришел к выводу, что единственной неисправной частью программы является цикл, где я собираю своипереходы.Программа думает, что пользователь печатает все эти переходы, но я просто не знаю, как сообщить программе, что ввод окончен, так как он фактически читает из файла.

Назначение недостаточно указано по этому вопросу.Мы не можем создавать свои собственные символы "EOF".Я считаю, что это следует рассматривать как один вход с несколькими строками, так что это означает, что это конечно.

Я пытался использовать Scanner раньше, он всегда блокирует hasNextLine ().Прямо сейчас я пользуюсь советом нескольких моих коллег и помощников и использую BufferedReader, но безрезультатно.Мой текущий код написан с помощью BufferedReader.
В настоящее время я тестирую дополнительные параметры, поэтому, если он сработает, я буду держать вас в курсе.

Вот цикл, который убивает мою программу:

while(((line=br.readLine())!=null&&(line.length()!= 0))||(line.equals((String) ("%n")))) { 
       if (line.isEmpty()) break;
       prijelazi.add(line);
}

Переменные: line - это String, prijelazi - это LinkedList, а br - BufferedReader.

Ожидается: ожидается, что он будет работать во всех форматах и ​​не зависнет, если под пустыми строками нет пустых строк.

На самом деле: если я нажму ENTER 2 раза или более после последнего перехода в файле, моя программа будет работать.Если есть меньше, то это не так.Мой код прошел интеграционные тесты на сервисе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...