Область действия переменной представляет собой часть программы, в которой доступна определенная переменная (чтобы узнать больше об областях видимости переменных в Java, я бы рекомендовал прочитать эту статью ).
Что касается вашей непосредственной проблемы / вопроса, вы создаете переменную container1
в следующем операторе if:
if (contInput.equals("1")) {
System.out.println("Input the name of Container 1: ");
String ContInp1 = reader.nextLine();
Container container1 = new Container(ContInp1);
container1.printContainer();
}
Это означает, что область действия container1
или часть программы, в которой другие методы могут получить к ней доступ, ограничена только этим оператором if. Ваш код пытается получить доступ к container1
в функции inputHandler()
, которая не только выходит за рамки container1
, но и вызывается до того, как будет создан экземпляр container1
. Чтобы сделать container1
доступным вне оператора if, вам придется увеличить область действия container1
. Лучший способ сделать это - сделать статическую переменную экземпляра класса AhaProgram
. Это будет выглядеть примерно так:
public class AhaProgram {
private static Container container1;
public static void main(String[] args) {
Scanner reader = new Scanner (System.in);`
System.out.println("Hello! This is the AHA Program of Jalosjos, Parreno and Alfonso");
System.out.println("Please type the letter of your option");
boolean loop = false;
while (loop != true) {
showOptions();
inputHandler();
String contInput = reader.nextLine();
if (contInput.equals("1")) {
System.out.println("Input the name of Container 1: ");
String ContInp1 = reader.nextLine();
container1 = new Container(ContInp1);
container1.printContainer();
}
// ...the rest of your program...
}
Надеюсь, это помогло!