Вам нужно поместить код в метод внутри вашего класса.Например:
public static void doStuff(String inputString) {
// Assign ArrayList of Strings "res" to splitExpression
ArrayList<String> res = splitExpression(inputString);
// Create an ObjectList that holds res
ArrayList<Object> objectList = new ArrayList<Object>(res);
System.out.print("\n Let my algorithm take care of it: \n\n");
// (...) REST OF YOUR CODE
for (int i = 0; i < maxi; i += 2) {
String operator = (String) objectList.get(i + 1);
double a = (Double) objectList.get(i);
double b = (Double) objectList.get(i + 2);
double sum;
if (i == 0) {
sum = sum(a, b, operator);
} else {
sum = sum(lastSum, b, operator);
}
lastSum = sum;
System.out.println(lastSum);
}
}
Теперь метод doStuff
имеет параметр String inputString
(который решает вашу первую проблему inputString не может быть преобразована в переменную ).Все остальные синтаксические ошибки также должны быть устранены.
В вашем методе main
вы бы назвали этот метод следующим образом:
public static void main(String[] args) {
String inputString = "0";
// the code with the scanner comes here...
doStuff(inputString);
}
Еще один совет: сканер может выдавать исключения - поэтому вам нужно try.. catch
их.Поскольку вы «закрываете» сканер в конце, вы можете использовать более короткую попытку с ресурсами , которая будет выглядеть следующим образом:
try (Scanner user_input = new Scanner(System.in)) { // the scanner is only available inside the try block - and in each case (exception or not) it will be closed.
System.out.print("please insert your calculations: ");
inputString = user_input.next();
}
И последняя подсказка: Вваш цикл у вас есть try...catch
, который ловит NumberFormatException
.Было бы лучше, когда вы обрабатываете исключение.Например, напечатать сообщение для пользователя, чтобы он знал, что произошло, или установить номера по умолчанию ...
надеюсь, это поможет