我正在尝试编写一个程序,允许用户创建2个仓库。 我在switch语句中有它,但是当它完成后,我回去创建第二个仓库,它将覆盖depot1。
我不确定如何创建2个独立的仓库。
do {
System.out.println("(1) Add depot number 1 ");
System.out.println("(2) Remove a depot");
System.out.println("(3) Exit program");
option = console.nextInt();
switch (option) {
case 1:
depot1 = new Depot();
if (depot1.checkDepot() == true){
System.out.println("Enter Depots name");
n = console.next();
depot1.setDepotName(n);
}
else{
System.out.println("Error only 2 depots allowed");
}
break;
case 2:
case 3:
System.exit(0);
}
}
while (option !=3);
public class Depot
{
private String name;
private Product product1, product2, product3;
static int depotCounter = 0;
// Constructor to count depot objects
public Depot(){
depotCounter++;
}
// Method to make sure no more than 2 depots are created
public boolean checkDepot(){
if (depotCounter <= 2){
return true;
}
else{
return false;
}
是我的仓库类,我有一个计数器和一个checkdepot以确保仅创建2个。
它可以很好地创建depot1,但是当我再次进入该语句并单击(1)时,它将在对象depot1上重新写一个新名称
答案 0 :(得分:1)
输入选项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),然后创建相应的软件仓库。如果您根本没有创建仓库,那么depot1为空,因此您创建了仓库1。如果已经创建了depot1,则depot1 == null为false,因此它跳转到第二个if-block,检查depot2是否为null,因此创建depot2。当已经有2个仓库时,它什么也不做。
如果您想要两个以上的仓库,Backpack在回答中说的是您要走的路。
总结一下: a)您需要为仓库提供不同的变量,而不仅仅是一个变量,因此您不仅要覆盖当前的仓库。 b)如果您希望对象在switch语句之外持久存在,则需要在它之外声明它们。变量只在其中声明它们的块内“活动”。
答案 1 :(得分:0)
您可以尝试创建软件仓库的列表,然后对其进行遍历。这样,您可以随时将对象添加到列表中,或从列表中删除它。
此外,您可以在软件仓库对象中添加一个标识符,该标识符可以提供ID或类似名称,以便您区分它们。
答案 2 :(得分:0)
int option = 0;
Depot depot;
String name;
Scanner console = new Scanner(System.in);
List<Depot> depotList = new ArrayList<>();
do {
System.out.println("(1) Add depot number ");
System.out.println("(2) Remove a depot");
System.out.println("(3) Exit program");
if (console.hasNextInt()) {
option = console.nextInt();
switch (option) {
case 1:
if (depotList.size() < 2) {
System.out.println("Enter new Depot name:");
if (console.hasNext()) {
name = console.next();
depot = new Depot();
depot.setDepotName(name);
depotList.add(depot);
}
} else {
System.out.println("Error only 2 depots allowed");
}
break;
case 2:
// remove depot code
break;
case 3:
break;
}
}
} while (option != 3);
System.out.println("Depots added:");
System.out.println("-------------");
depotList.forEach(currentDepot ->
System.out.println(currentDepot.getDepotName()));