Вы объявили только переменную scan
в методе flow
.Если вы хотите использовать это значение в других методах, вам необходимо выполнить одно из двух действий:
- Объявить его как нелокальную переменную
- Передать егов эти другие методы через параметр
Поскольку все ваши методы являются статическими, для первого варианта вам необходимо объявить его как:
private static Scanner scan;
Однако в настоящее время flow
метод, кажется, делает две радикально разные вещи:
- Он создает
Scanner
(но на самом деле не использует его) - Он пытаетсяиспользовать данные, которые, как он ожидает, уже были прочитаны
Мне кажется, вы должны создать Scanner
в своем методе main
(или в новом методе, который вызывается до * 1028)*, тем не мение).В настоящее время вы вызываете readBoolean2D
как самое первое действие программы, пытаясь прочитать переменную, которая не существует, еще до того, как какая-либо Scanner
была создана.
Обратите внимание, что ничего из этогоимеет какое-то отношение к самому блоку try
- факт, что переменная объявлена в отдельном методе, является проблемой (и временем вызовов метода), не блок try
.
Я бы попытался реструктурировать программу следующим образом:
- Открытый ввод
- Считать все данные
- Обработать все данные
Я подозреваю, что вы действительно можете обойтись с просто локальными переменными и параметрами - первый метод возвратит a Scanner
;второй метод будет брать сканер и возвращать данные, которые он читает;третий метод будет принимать данные.