Я хочу преобразовать что-то вроде
233 + 4 * (4-8) + 5
в [233, +, 4, *, (, 4, -, 8,), +, 5]
Где последний - массив строк.
Пока у меня есть:
String s = "233 + 4 *(4-8) +5";
for(int i = 0; i<s.length(); i++)
{
int j = i + 1;
String sub = s.substring(i,j);
String checkdigit = s.substring(i,j);
while(checkdigit.matches("\\d|\\.") && j<s.length())
{
checkdigit = s.substring(j,j+1);
j++;
}
System.out.print(sub);
if(!sub.equals(" ")) expression.add(sub);
}
Но я получаю исключения нулевого указателя.Может ли кто-нибудь помочь мне исправить это?
Также, если бы кто-нибудь мог помочь мне разобрать это, чтобы он также принимал отрицательные значения (например, -5), это было бы полезно.
Редактировать: Кстати.предназначен для парных чисел (например, 5.0)
Редактировать 2:
Если кто-нибудь знает какие-либо классы Java API, которые могут заменить мой код, пожалуйста, покажите, как я могу заменить свой код на них.