我一直在进行一项总结如下的练习:
使用继承和多态写一个程序来存储单个数组中食物的详细信息。例如,比萨饼的细节(商品编号,尺寸,基数),软饮料(......)......
我已经建模了所有东西,创建了我的基类和派生类。
一切正常,除了一件事:当用户选择删除项目时,如果找不到项目编号,我应该输出字符串“Not found”。我的数组列表将每个食物项目对象(子类)作为元素。这是我从数组中删除项目的代码:
System.out.println("Enter the menu item number");
String num = input.next();
for(int j=0; j<menuItems.size();j++) //menuItems is my arraylist
{ if((menuItems.get(j).getItemNumber().equals(num))) //getItemNumber is a method in the derived class
menuItems.remove(j);
}
System.out.println("Done");
break; //for the switch statement
如果在数组列表中找不到该项,我应该输出“Not found”而不是“Done”。我最初的尝试如下:
if(!menuItems.get(j).getItemNumber().contains(num))
System.out.println("Not found");
else
//the code above
这不起作用,因为它在for循环中,if语句甚至会在项目被删除后检查数组列表。因此,它仍将评估为true
。
有人可以帮帮我吗?
更新:
我解决了以下问题
int found=0; // element not found found =0 else 1
for(j=0; j<menuItems.size();j++)
{
if((menuItems.get(j).getItemNumber().equals(num)))
{
menuItems.remove(j);
System.out.println("Done");
found+=1;
}
}
if (found ==0)
{
System.out.println("Not found");
}
break; //for the switch statement
答案 0 :(得分:1)
你可以这样做
boolean found = false;
for(int j=0; j<menuItems.size();j++){
if((menuItems.get(j).getItemNumber().equals(num))){
menuItems.remove(j);
found = true;
break;
}
}
if(found){
System.out.println("Done");
} else {
System.out.println("Not found");
}
如果您没有设法删除该项目,那么它就不存在了。
答案 1 :(得分:0)
如果找到并删除该元素,请断开开关(plates
只是一个随机标签):
plates: switch (smth) { //whatever you use here (not provided in the post)
...
for(int j=0; j<menuItems.size();j++) { //menuItems is my arraylist
if(menuItems.get(j).getItemNumber().equals(num)) { //getItemNumber is a method in the derived class
menuItems.remove(j);
System.out.println("Done!");
break plates; //for the switch statement
}
}
System.out.println("Not found!");
break; //for the switch statement (that you did not provide)
...
} //end of switch (if num is found, you continue from here)
答案 2 :(得分:-1)
我想也许您可以查看HashMap,然后您可以编写代码:
HashMap<String, Food> = new Hashmap<>();
String num = input.next();
final Food temp = MyMap.get(num)
if(temp == null)
{
//not found
}
else
{
//found
}