Когда вы вводите опцию 1, все, что она делает, это выполняет код в первом «переключателе».И там вы всегда используете depot1 в качестве переменной.Кстати, после выхода из оператора switch ваше хранилище в любом случае теряется, потому что вы объявляете его в этом блоке.Что вы могли бы сделать, это что-то вроде этого:
do {
Depot depot1;
Depot depot2;
//Your code for the menu, e.g. selecting what the user wants to do
switch (option) {
case 1 :
if (depot1 == null) {
depot1 = new Depot()
//Do what you want to do with your depot
} else if (depot2 == null) {
depot2 = new Depot()
//Same as above
}
break;
//Rest of the switch statement
}
} while (option != 3)
То, что я сделал там, это просто использование 2 разных переменных для депо, и когда вы хотите создать новое хранилище, вы сначала проверяете, если вы ужесоздал депо (если, например, depot1 указывает на какой-то объект, поэтому если depot1 == null равно false), а затем создайте соответствующий депо.Если вы вообще не создали депо, то депо1 равно нулю, поэтому вы создаете депо1.Если вы уже создали depot1, depot1 == null имеет значение false, поэтому он переходит ко второму блоку if, проверяет, имеет ли значение depot2 значение null, поэтому он создает depot2.Когда уже есть 2 депо, оно ничего не делает.
Если вам нужно более 2 депо, то, что сказал Рюкзак в своем ответе, - ваш путь.
Подводя итог: a) Вам нужноразные переменные для ваших депо, а не только одна, так что вы не просто перезаписываете свое текущее депо.б) Если вы хотите, чтобы ваши объекты сохранялись за пределами оператора switch, вам нужно объявить их вне его.Переменные «живут» только внутри блока, в котором вы их объявляете.