Декодировать многочлен из строки с шаблоном и совпадениемJAVA

Программисты JAVA общаются здесь
Anonymous
Декодировать многочлен из строки с шаблоном и совпадением

Сообщение Anonymous »

Я пытаюсь расшифровать каждые отдельные монома в строке, представляющей многочлен. < /p>

public static void main(String[] args) {
String polynomial = "3x^3-x^2+5.9x-3.8";
String monomialFormat = "([+-]?[\\d\\.]*[a-zA-Z]?\\^?\\d*)", monomialPartsFormat = "([+-]?[\\d\\.]*)([a-zA-Z]?)\\^?(\\d*)";

Pattern p1 = Pattern.compile(monomialFormat);
Matcher m1 = p1.matcher(polynomial);

while (!m1.hitEnd()) {
m1.find();
Pattern p2 = Pattern.compile(monomialPartsFormat);
System.out.print(m1.group() + " -> ");
Matcher m2 = p2.matcher(m1.group());

float coefficient;
try {
coefficient = Float.valueOf(m2.group(1));
} catch (IllegalStateException e) {
coefficient = 0.0F;
}
int exponent;
try {
exponent = Integer.valueOf(m2.group(3));
} catch (IllegalStateException e) {
exponent = 0;
}
char variable;
try {
variable = m2.group(2).charAt(0);
} catch (IllegalStateException e) {
variable = '_';
}

System.out.println("" + coefficient + variable + "^" + exponent);
}
}
< /code>

Первый шаблон работает правильно и разрезает многочлен на несколько мономов, но не второй. Никаких совпадений не найдено для различных частей каждого монома (коэффициент, переменная, экспонента).
Должно быть что -то не так во второй регулярной экспозиции, но я не могу его найти. < /P>

Результаты отпечатков: < /p>

3x^3 -> 0.0_^0
-x^2 -> 0.0_^0
+5.9x -> 0.0_^0
-3.8 -> 0.0_^0


Подробнее здесь: https://stackoverflow.com/questions/349 ... nd-matcher

Вернуться в «JAVA»