2017-01-12 6 views
0

Я делаю программу калькулятора и хочу, чтобы она могла использовать такие фракции: 7/8 * 3/4 or 11/12 - 1/10.Как отделить строку от 3 отдельных строк с неизвестной длиной

Отделить 3 части firstValue, operation, secondValue.

Теперь нужно выяснить, как отделить фракцию в 3-х частей без пробелов и значения во фракции имеет неожиданное количество цифр, как 3 и 30.

Если это была фракция как 3/4 , Я знаю, что я мог бы просто отделить его, разделив его на все 3 символа, но он может быть такой же, как у 3/11, поэтому просто сохранить разделение как 3 не получится.

Я также знаю, что не могу использовать StringTokenizer и отдельно использовать «/» или «». Есть ли способ сделать это?

+0

Возможно, вам было бы лучше помечать токенизацию строки и преобразовывать дроби в десятичные знаки –

+0

В приведенном выше примере, как вы можете сказать, что '7/8 * 3/4' на самом деле не означает' (7/8 * 3)/4'? –

+0

@KlitosKyriacou 7/8 - это один токен, * второй, 3/4 - третий. Сначала я отделяю все токены, а затем отделяю 7/8 и 3/4. – TheLittleCoder

ответ

1

Просто разбейте по границам слов:

String[] parts = str.split("\\b"); 

Это расщепляется между словесными символами и не-слово (и наоборот). Цифры считаются «символами слов».

Это займет строка, такая как "123/456" и возвращает массив ["123", "/", "456"].

+0

Границы? просто разделение на символы не будет работать (если это то, что вы имели в виду)! Что, если это похоже на 7/20? – TheLittleCoder

+0

@ TheLittleCoder будет работать с числами (и операторами) любого размера. Это не разделяет символы, они разбиваются на границы слов * – Bohemian

+0

Будут ли они похожими на ["7", "/", "2", "0"]? Это не совсем то, что мне нужно – TheLittleCoder

Смежные вопросы