Метод не использует параметр
Метод fillLists() не использует параметр Scanner sc, который также является параметром метода calc() внутри которого использую fillLists().
Если Scanner sc объявить и инициализировать внутри calc(), то fillLists() работает. Подскажите, пожалуйста, в чем дело. Метод check(), проверяющий строку в Scanner на требуемый паттерн, работает.
void calc(Scanner sc) {
//Scanner sc = new Scanner(str);
if (check(sc) == true) {
//String nn = "12 + 8";
List<Integer> digits = new ArrayList<Integer>();
List<Character> signs = new ArrayList<Character>();
fillLists(sc, digits, signs);
int result = 0;
switch(signs.get(0)){
case '+':
result = digits.get(0) + digits.get(1);
break;
case '-':
result = digits.get(0) - digits.get(1);
break;
case '*':
result = digits.get(0) * digits.get(1);
break;
case '/':
result = digits.get(0) / digits.get(1);
break;
}
System.out.println("Result " + result);
}
else {
System.out.println("Check failed. Throw exception");
}
}
void fillLists(Scanner sc, List digits, List signs) {
int i = 0;
while (sc.hasNext()) {
if (i % 2 == 0)
digits.add(sc.nextInt());
else
signs.add(sc.next().charAt(0));
i++;
}
}
public static void main(String[] args) {
// то, что передаю в сканер
Calculate c = new Calculate();
String nn = "12 + 8";
Scanner sc = new Scanner(nn);
c.calc(sc);
}
Ответы (1 шт):
Автор решения: John Enesan
→ Ссылка
Проблему я решил, передавая в методы строку и создавая сканеры уже внутри самих методов. Оказалось, что, всё-таки, ни один метод внутри класса Calculator не видел то, что было внутри у сканера. Почему-то это значение не передаётся, если передаём его из другого класса.