В общем, если вы не понимаете, что делает ваш код, я рекомендую:
- Попробуйте удалить материал из вашей программы (после создания резервной копии), пока у вас не будет короткого простогопример того, что вы не понимаете.Зачем пытаться выяснить большую нечеткую проблему, если вы можете выяснить меньшую ее часть?
- Поэкспериментируйте, добавив такие выражения, как
System.out.println('reached line 17')
, по всему коду, чтобы увидеть порядок, в котором ваша программа работает.
Тем не менее, вот некоторые (частичные) ответы.
1) Он не зацикливается после успеха
Цикл многократно выполняет операторы внутри него. Звучит так, как вы хотите бытьповторяется большинство или вся программа:
- чтение строки с клавиатуры
- удаление определенных символов из строки
- , если оставшаяся строка является числом, отделите еена 3 части, затем выведите
correct
Если вы хотите, чтобы эти три действия повторялись снова и снова, вам нужно сделать большой цикл вокруг кода, который выполняет эти три действия.Без цикла, без повторений.
(И где-то внутри этого цикла будет находиться код, выходящий из программы , если , входная строка "выход" и т. Д.)
2) выдает ошибку из-за круглых скобок в: phone = phone.replaceAll("(","");
Чтобы это исправить, нужно знать две вещи.Во-первых, replaceAll
обрабатывает свой первый аргумент "("
как регулярное выражение .Не беспокоясь о том, что это такое, просто знайте, что replaceAll
придает особое значение символу (
, а не трактует его как обычный старый (
.Вы можете сказать replaceAll, чтобы он обрабатывался нормально, поставив \
перед (
.\
называется «побег».Поэтому содержимое вашего строкового аргумента должно быть: \(
Во-вторых, вы не можете просто ввести "\("
в свой исходный код, потому что сам компилятор Java обрабатывает \
как специальный символ. Вы должны добавить еще одну обратную косую черту, чтобы указать компилятору нормально обрабатывать другую обратную косую черту.Звучит абсурдно, но так оно и есть.
phone = phone.replaceAll("\\(","");
3) не имеет максимальной проверки символов с помощью логической команды.
Не уверен, что вы хотите здесь: проверять, что он имеет больше или меньше , чем определенное количество символов?В любом случае, вы можете написать if
, чтобы проверить, больше или меньше phone.length () какое-либо число.