2013-08-06 2 views
2

В JAVA: -Найти степень уравнения в строке?

Учитывая уравнение в строке: String equation = "4*x^3-19*x^2+2*x-1=0";, как найти свою степень?

Я подумал о том, чтобы зацикливаться на строчке, нахо дившей позиции карманов '^', получить числа после каретки, а наивысшим среди них будет степень уравнения. Но что, если цифры больше одной цифры? Реализация этого будет заключаться в разработке анализатора уравнений!

Так вы можете сказать мне другой путь?

Edit:

Я хотел бы знать, как это может быть сделано, например, с использованием регулярных выражений, как указано в одном из комментариев и не кода.

+0

Вы можете использовать регулярные выражения для этого совпадения последовательности цифр с последующим а ^. –

+0

Не могли бы вы рассказать мне, как это сделать? –

+0

См. Http://docs.oracle.com/javase/6/docs/api/java/util/regex/Matcher.html, это все документировано. После того, как вы что-то пробовали, если вы столкнулись с определенной проблемой, вернитесь сюда и опубликуйте его. –

ответ

5

Вы можете попробовать что-то вроде этого:

int degree = 1; 
Matcher m = Pattern.compile("(?<=\\^)\\d+").matcher(equation); 

while (m.find()) { 
    int exp = Integer.parseInt(m.group()); 

    if (exp > degree) 
     degree = exp; 
} 

Мы находим все матчи (?<=\^)\d+. \d+ соответствует строке 1 или более цифр, а (?<=\^) - positive lookbehind, чтобы гарантировать, что этим цифрам предшествует каретка (но не включает эту каретку в матче).

+2

@JasonC Если бы он не хотел полностью функционального и проверяемого ответа, тогда SO не было места, чтобы спросить, честно говоря. – arshajii

+1

Это правильно, поэтому не было места, чтобы спросить, поэтому я поставил под вопрос вопрос. –

+0

@JasonC, то почему мы удалили флаг домашней работы? По крайней мере, если это домашнее задание, то OP может пометить его, иначе мы все предположим, что это проблема Homework. – Algorithmist

2

Вы можете использовать следующие регулярные выражения в соответствии со значениями, которые содержатся после каретки:

\^\d+ 

Каких бы явно соответствовать каждому значению, а затем вы можете просто найти наибольшее значение, которое было помечено и вернуть его ,

(Tutorial on Regular Expressions in Java)

+0

+1 для хорошей ссылки на учебник Vogella. – Algorithmist