Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Строки


Автор: CrasyMen 29.8.2007, 00:10
Пользователь вводит строку типа "123 + 477" или "12*10". На экран должен выводится результат ( "600" или "120" соответственно). 

Используемые арифметические операции: +,  - , *,  и  /. 
Пробел игнорируется.
Строка должна проверятся на валидность, тоесть если пользователь введет "йцук45 + 4" или "12 4 + 5", то должен получить месагу типа "Ошибка! Повторите ввод".

Заранее благодарю.

Автор: shimopus 29.8.2007, 00:34
Уже было! Используйте поиск. http://forum.vingrad.ru/forum/topic-169560/anchor-entry1235949/0.html

Автор: CaligoSpiritus 1.9.2007, 15:12
Предлагаю сделать попроще:
Берешь строку, делишь ее сплитом на подстроки по используемым знакам (+,  - , *,  и  /) и проверяешь, чтобы получившийся массив строк содержал в себе строковое изображение чисел.

Автор: CrasyMen 1.9.2007, 22:52
А как определить является ли строка числом? Можно конвертировать в char-массив, а потом с помощью Character.isDigit() проверять каждый элемент массива. Но мне кажется это корявый способ.

Цитата(CaligoSpiritus @  1.9.2007,  15:12 Найти цитируемый пост)
Берешь строку, делишь ее сплитом на подстроки

не понял что такое "сплит". Знаю только StringTogenizer.

Автор: niasilil 2.9.2007, 03:02
Цитата(CrasyMen @ 1.9.2007,  22:52)
А как определить является ли строка числом? Можно конвертировать в char-массив, а потом с помощью Character.isDigit() проверять каждый элемент массива. Но мне кажется это корявый способ.

Цитата(CaligoSpiritus @  1.9.2007,  15:12 Найти цитируемый пост)
Берешь строку, делишь ее сплитом на подстроки

не понял что такое "сплит". Знаю только StringTogenizer.

Код

        try {
            double d = Double.valueOf(s.trim()).doubleValue();
            System.out.println("double d = " + d);
        } catch (NumberFormatException nfe) {
            System.out.println("NumberFormatException: " + nfe.getMessage());
        }


split - это функция класса http://java.sun.com/javase/6/docs/api/java/lang/String.html#split(java.lang.String), введена с java 1.4

Автор: Mayk 2.9.2007, 03:14
Antlr, javacc, sable, byacc/j и другие решают подобную задачу в лёт.

Автор: CrasyMen 3.9.2007, 22:09
всем большое спасибо!
Цитата(niasilil @  2.9.2007,  03:02 Найти цитируемый пост)
split - это функция класса String, введена с java 1.4

похоже книга, которую я читаю, безнадежно устарела (((

Ребята, а вы что весь джавадок знаете?

Автор: LSD 4.9.2007, 17:32
Цитата(CrasyMen @  3.9.2007,  23:09 Найти цитируемый пост)
Ребята, а вы что весь джавадок знаете?

Мы http://www.google.ru/search?q=how+to+split+string+in+java+&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ru:official&client=firefox-a smile

P.S. Не забывай помечать вопрос как решенный.

Автор: niasilil 6.9.2007, 18:46
Цитата(CrasyMen @ 3.9.2007,  22:09)
Ребята, а вы что весь джавадок знаете?

I wish smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)