2013-02-27 3 views
-1

Ну, я недавно начал изучать java-кодирование, и есть некоторые проблемы, которые необходимо решить.Преобразование из строки в целое java jdk 1.6

Я только что столкнулся с этой проблемой, что при преобразовании строки со специальными параметрами внутри (например, «3^5 + 7 * 10» или «(1/2)»). в таких случаях Integer.parseInt возвращает ошибку, говорящую о том, что номер не поддерживается. И фактический код:

int i = Integer.parseInt("5*3^2+3^2"); 

Заранее спасибо :)

Update: Есть еще одна библиотека, которую я мог бы использовать для того, чтобы сделать преобразование, AFAIK это имело обыкновение быть очень легко в C#.

+0

Почему вы ожидаете простого «parseInt» (что означает «преобразовать это число * в« int »), чтобы иметь возможность обрабатывать целые выражения с помощью вычислений? –

ответ

0

Хорошо, нашел решение самостоятельно. С JDK 1.6 вы можете использовать JavaScript, который так же эффективен, как и C# в таких преобразованиях. Настолько плохо, что использование java - такая боль. Я думаю, что есть причина, по которой большинство программистов используют C++. Вы можете посмотреть the actual answer here, также не забудьте оставить это.

4

Вы не можете отправить такое выражение в parseInt. Он предназначен для преобразования заданного строкового представления числа в Integer. Вам нужно было бы получить решение для вашего выражения и , затем передать результат в parseInt. Хотя, если вы получите решение в java-коде, в любом случае оно будет числом.

+0

Итак, что мне делать? (Также обратите внимание, что я не могу просто вычислить строку до преобразования. Либо должен быть способ преобразования строки в фактический int (который делает расчеты на месте), либо должен быть способ вычислить строку, а затем преобразовать ее в int.) – lkn2993

+0

Почему вы не можете просто вычислить результат? Является ли это математическое выражение пользователем? Если вы отредактируете свой вопрос немного больше того, чего вы на самом деле пытаетесь достичь, и ваши ограничения будут людьми, которые могут помочь вам получить решение, а не находиться в текущей позиции, только имея возможность сказать: «Вы используете это неправильно. –

+0

Вы сказали, что я должен оценить строку, которая обычно не возможна. Прерывание строки в токенах и любые другие виды не прямой оценки также невозможны (не должно быть сделано). Помимо моего собственного ответа, не могли бы вы предоставить мне полезную альтернативу? – lkn2993

0

Это связано с тем, что parseInt обрабатывает правильное значение числовое значение Строковое значение. Это полное математическое выражение.

Строка не может вычислять математические операции внутри, потому что ее единственные персонажи, что она знает, и что-то еще.

2

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

В качестве альтернативы здесь приведен пример того, кто делает это с использованием возможностей сценариев Java для этого. Algebra equation parser for java

+0

Уже ответил на мой вопрос. + ваш ответ неверен, так как разбиение строки на токены НЕ является опцией. – lkn2993

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