Я занят созданием дерева выражений для школы, я уже построил часть, в которой создается дерево, и печать результата арифметического выражения также работает.Для выполнения задания есть дополнительная часть, я бы тоже хотел, чтобы это работало.Дополнительное назначение делает программу способной читать выражения.Я довольно далеко с этим, но я не уверен, что я закодировал эту вещь с хорошим положением чисел в конце int.Проблема, которую я пытаюсь решить, заключается в том, когда есть такое выражение ...(3 * (8-2)) + (12/4)... как я могу получить 12 из массива символов, так как они являются двумя отдельными символами?Я использовал массив символов в остальной части кода, но, конечно, можно использовать строку для получения двух символов.
Я сделал это следующим образом:
// if the next character is a digit...
if (Character.isDigit(expression[i])) {
// ... make local variables 'nextNumber'...
int nextNumber = 0;
// ... and 'a' which already contains this first digit...
String a = Character.toString(expression[i]);
// ... so when we check for the next character...
for (int k = i+1; k < expression.length; k++) {
// ... wether it is a digit,...
if (Character.isDigit(expression[k])) {
// ... we can add that digit to 'a',...
a = a + Character.toString(expression[k]);
}
// ... and if it is not a digit...
else if (!Character.isDigit(expression[k])) {
// ... we will exit the for loop.
break;
}
}
// now we have to change the String to an integer...
nextNumber = Integer.getInteger(a);
// ... and then we are sure we have the whole number as it was ment to be
// in the given expression
return new ET(nextNumber);
}
Но этокажется таким неряшливым.Я долго искал в Google, и все, что я нашел, было так, но я не могу представить, что нет более простого или хотя бы менее небрежного способа.Ребята, вы знаете лучший путь или этот путь?
Решение, которое я создаю, является относительно простым способом решения проблемы дерева выражений, я мог бы решить его больше, но я не знаюхочу потратить больше времени, чем нужно, пока я могу показать учителю, что понял уроки.Курс, по которому он предназначен, - это Алгоритмика, так что речь не идет об изучении Java, я имею в виду, что я не прошу решения проблемы, которую учитель попросил меня решить.
Заранее спасибо!