Следующий код должен быть довольно очевидным. Что я сделал до сих пор, чтобы вычислить Y с переменной x и некоторыми константами:
public static void main(String[] args) {
int x=50;
String str="100-x+200";
str=str.replaceAll("x", Integer.toString(x));
String [] arrComputeNumber = str.split("[-|+]");
String [] arrComputeOperator = str.split("[\\d]");
int y=Integer.parseInt(arrComputeNumber[0]);
for (int i = 0; i < arrComputeOperator.length; i++) {
if (arrComputeOperator[i].equals("-")) {
y-=Integer.parseInt(arrComputeNumber[i+1]);
} else if (arrComputeOperator[i].equals("+")) {
y+=Integer.parseInt(arrComputeNumber[i+1]);
}
}
System.out.println("y="+y);
}
К сожалению, это не работает, поскольку str.split("[\\d]")
извлекает неправильно.
Если это правильно, я предполагаю, что приведенный выше код будет работать правильно. В любом случае, эта реализация просто тривиальна и не учитывает скобки или комбинацию + (которая становится минусом) и т. Д. Я не нашел лучших способов. Знаете ли вы какие-нибудь лучшие способы оценить строку как математическое выражение в Java?