Question :
I created a class with two properties as in the example below:
class Polinomio {
private int coeficientes;
private int expoente;
}
I will create a list to receive a polynomial type where I will receive
the terms to perform the addition, subtraction, and multiplication operations.
List<Polinomio> lst = new ArrayList<Polinomio>();
When I pass a string as any of these below in the constructor would like to break the terms, but I’m not getting it.
- a) -4x ^ 5 + 3x ^ 2 + 4
- b) -4x ^ 3 + 3x ^ 2-8
- c) 3x ^ 3 – 3x ^ 2 + 4
- d) 3x ^ 3 – 3x ^ 2 + 2
When it crashes it would be.
- a) lst = p1 (-4.5), p2 (3.2), p3 (4.0)
- b) lst = p1 (-4.3), p2 (3.2), p3 (-8.0)
- c) lst = p1 (3.3), p2 (-3.2), p3 (4.0)
- d) lst = p1 (3.3), p2 (-3.2), p4 (4.0)
p1, p2, p3 .. are the positions that the elements will be in the list.
In case of the last term when it is only 1 number without “x” it writes as zero. By default the polynomials will have this same variable “x”.
How can I break terms?
Answer :
You can use Pattern
: some thing of type Pattern.compile("(?=[+-])").split(…)
will return a list of monomials (bits type -2x^3
, +3x^4
, 7
); you can use similar ideas (break in ^
and x
) to separate coefficients and exponents.
You have to pay attention to the fact that you do not usually write many terms of a polynomial (eg -x^3+x^2
, where coefficients are all implicit), and you can find a “ghost” monomial at the beginning of the list that Pattern
will return, when the polynomial starts with a minus sign.
(On the Pattern
page you have an explanation of how regular expressions work – the .compile()
parameter – but what you need to know to understand how this idea works is that eg Pattern.compile("(?=[aeiou])").split("abacaxi")
will return the {"ab", "ac", "ax", "i"}
list % – in general, the .split()
parameter will be broken immediately before the characters you placed in brackets in .compile()
.)
It worked!
code that I made as an example now I can walk from here, thank you!
public static void main(String[] args){
String poli = "-3x^3 - 3x^2 + 4";
Pattern.compile("(?=[+-])").split(poli);
Pattern pegapoli = Pattern.compile("(?=[+-])");
String[] m = pegapoli.split(poli);
System.out.println(m[0]);
System.out.println(m[1]);
System.out.println(m[2]);
}