我有一个假设遍历 2 个 Ojbect 数组的方法,第一个是大小为 50 的菜单,其中包含食谱,其中最多可容纳 10 个称为成分的元素,每个元素最多可容纳 3 个元素,但我只是在寻找它们名字!我想在食谱中获取那些成分元素的匹配名称并将它们添加到我的字符串数组中,然后返回它,这是我的代码......
public class Recipe implements Cloneable
{
String Name;
final int INGREDIENT_ARRAY_MAX = 10;
Ingredient Ingredients[] = new Ingredient[INGREDIENT_ARRAY_MAX];
public class RecipeBook
{
final static int MENU_ARRAY_MAX = 50;
static Recipe Menu[] = new Recipe[MENU_ARRAY_MAX];
public static String[] getRecipesByIngredient(String ingredientName)
{
String[] targetRecipes = new String[MENU_ARRAY_MAX];
int counter = 0;
for (int j = 0; j < Menu.length; j++)
{
if (Menu[j] == null)
{
break;
}
else
{
for (int k = 0; k < Menu[j].Ingredients.length; k++)
{
System.out.println(Menu[j].Ingredients[k]);
if (Menu[j].Ingredients[k].getName().equals(ingredientName))
{
targetRecipes[counter] = Menu[j].getName();
counter++;
}
}
}
}
return targetRecipes;
}
}
}
现在我知道它不起作用以及为什么,但我不确定解决方案。目前我每个食谱中只有 3 个食谱和 3 个成分!上面的东西仅供参考,它们是RecipeBook (Menu) 和Recipes (Ingredients) 的对象数组。
现在,当运行此代码时,我将进入 NullPointerException,因为尝试针对字符串测试空值,但我如何让它检查配方,如果它没有找到任何东西,它会转到菜单中的下一个配方,如果有,它只是添加它,但会继续检查直到完成。我尝试添加“if”语句来检查空值而不是空值,但它变得复杂,它仍然没有让我的程序返回检查其余数组。我知道第一个“if”可以保留,因为如果我在 Menu 中签入的位置为空,则其余部分必须为空,因此没有必要再进一步。但是我如何检查成分数组,找到一些东西,添加它,并回到菜单中筛选含有该成分的食谱?是否可以在内部循环中添加一个 if 来检查是否为 null,如果是,则返回到外部循环?