Причина, по которой вы получаете две записи после обработки символа, заключается в том, что вы не полностью прочитали строку, содержащую символ.
В частности, вы используете keyboard.nextInt();
в верхней ветви и keyboard.next();
в нижней ветви. Хотя они читают следующее целое число и символ, соответственно, они не обрабатывают маркер конца строки.
Затем, когда вы достигаете вершины цикла, вы вызываете keyboard.nextLine()
, который обрабатывает любые символы, встречающиеся после int (или символа в случае удаления всех), до конца маркера строки. С ожидаемым пользовательским вводом это просто пустая строка.
Чтобы это исправить, вам нужно убедиться, что вы читаете все keyboard.nextLine()
в тех случаях, когда вы читаете только целые числа или один символ.
Я встретился с этой проблемой однажды. Это было, потому что файл, который я пытался удалить, был частью путь к классу для другой задачи.
Есть ли что-то от процесса Муравья, который содержит файлы (или каталог) открытый? Это вызвало бы ситуацию, где Вы могли удалить их после рабочего муравья, но не во время.
Вы не говорите, выполняется ли Ваша сборка как в настоящее время зарегистрированный пользователь. В противном случае то, что explorer.exe или другому процессу показали каталог, может заставить его быть заблокированным также. Но удаление его в том же самом процессе explorer.exe успешно выполнилось бы. Попробуйте Неблокировщик от http://ccollomb.free.fr/unlocker/ для наблюдения, каким процессам заблокировали файлы/каталоги.
Это зависит...