Я делаю калькулятор Java Fraction для школы, и одна из самых больших проблем, которые возникают у меня, - это синтаксический анализ. Я могу использовать его, когда я использую только числа, но поскольку это калькулятор фракции, мы включаем символы подчеркивания (для смешанных чисел) и обратные косые черты для фракций. Как я смогу использовать метод parse, пока я использую символы, отличные от цифр? Номер смешанного номера: 4_7/8Калькулятор Фракции на Земле: Разбор
ответ
Попробуйте определить свой метод синтаксического анализа таким образом: BigDecimal parse(String)
. На данный момент вы можете просто вернуть null. Затем напишите единичные тесты для различных сценариев, которые необходимо поддерживать. Начните просто. Хотя верно, что вам нужно разбирать «-4_7/8», сначала убедитесь, что вы можете анализировать «7», «8», «-4», «7/8» и, наконец, «-4_7/8" . Обязательно рассмотрите также краевые случаи. Что вы будете делать с «2/-3»? Вы проанализируете это или учтите этот недопустимый ввод? Пример тест может выглядеть следующим образом:
@Test
public final void verifyParseOne() {
assertEquals(new BigDecimal(1), parse("10/10"));
}
Затем итеративно «исправить» ваша parse
функции, пока он не пройдет все тесты. Подсказка: вы должны попытаться разбить сложные сценарии на более простые, и вы можете сделать это, если ваша функция вызовет себя с другим параметром, чем тот, который был указан, и выполнение некоторых действий по результату. Например. Скажем, ваша функция уже знает, как правильно разобрать «7» и «8», и вы используете ее для создания отдельных объектов BigDecimal
для числителя и знаменателя. Как вы можете превратить эти два объекта в один?
ли не читы, вызвав любой из BigDecimal
конструкторов, которые принимают char[]
или String
в качестве аргументов.
Примечание: вам не нужно использовать BigDecimal
, вы можете создать аналогичный объект домена для представления чисел. Но это выходит за рамки этого вопроса.
При синтаксическом анализе ваша главная проблема заключается в следующем: как различные элементы разделены - или какой символ используется для разбиения строки. В вашем случае символ подчеркивания отделяет целое число от его дробной части, а обратная косая черта отделяет числитель от знаменателя.
С этим в руке вы можете разделить строку на значимые части.
Чтобы проанализировать строку, вы можете использовать, как указано в @ 3kings, метод String.split()
, это один из способов.
http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#split%28java.lang.String%29
String.split()
принимает регулярное выражение как разделитель для разделения на.
Допустим, вы получили вход 1_2/3
и хранить его в переменной с именем inputParts
, можно разделить его на _
характер и возвращает массив с 2-х элементов, 1
и 2/3
:
String[] inputParts = myInput.split("_");
Тогда вам может разделить дробной части и возвращает еще один массив с 2-х элементов, 2
и 3
:
String[] fractionParts = inputParts[1].split("/");
Вы будете п чтобы получить различные входы, которые вы могли бы получить. Иногда вы можете получить только долю, иногда целую цифру плюс дробь.
- 1. Калькулятор Java-фракции
- 2. Дни на земле Калькулятор в C#
- 3. Неверные переменные; калькулятор фракции; JAVA
- 4. Разбор фракции до нуля
- 5. Разбор фракции в форме Django
- 6. Магазин на земле
- 7. Разбор с Lex и Yacc (простой калькулятор)
- 8. Построение адреса на виртуальной Земле
- 9. Spinning iphone основанный на земле
- 10. Что, на земле, изменено свойство?
- 11. Где на Земле есть csc.exe?
- 12. Расстояния по степени на Земле
- 13. Калькулятор Java-фракции генерирует исключение для деления на ноль при попытке упростить
- 14. Невозможно делить на ноль Фракции
- 15. Как найти точку на земле окружен многоугольником, образованным четырьмя точками на земле
- 16. Разделительные фракции
- 17. Непрерывные фракции
- 18. Длина фракции
- 19. Словарь/Хашмап ......... что происходит на земле?
- 20. npm init - Что на Земле задают вопросы?
- 21. Сферическое расстояние между двумя точками на Земле
- 22. Как рассчитать площадь самопересекающихся многоугольников на Земле
- 23. Разделение кучи на 64-битной земле
- 24. Сколько раз на Земле выполняется setTimeout?
- 25. Three.js: Отражение на земле. Как это работает?
- 26. Имитированная сила тяжести: замедление на земле приближается
- 27. Артефакты на природной Земле Данные железнодорожной карты
- 28. Лучший способ выбрать случайную точку на земле
- 29. Смотрите лыжные трассы на земле google
- 30. Пайтона, в земле Haskell
do 'String.split' вызывает их, и вы должны уметь оттуда – 3kings
Его легко понять, если вы приведете пример. –
Можете ли вы привести пример использования подчеркивания для смешанного номера? –