gpt4 book ai didi

java - 为什么所有内容都从我的数组列表中删除?

转载 作者:行者123 更新时间:2023-12-02 15:27:43 25 4
gpt4 key购买 nike

我正在尝试回答这个问题:

Program the method findIngredients. This method takes in a String called foodInStock, and an ArrayList of Strings called ingredients. The method should return an ArrayList of ingredients that were not found in foodInStock.

例如,如果:

foodInStock = “tomatopotatocornturkeycarrotstuffing”

ingredients = {“potato”, “corn”, “salt”, “chicken”, “turkey”}

返回{“盐”,“鸡”}

我尝试编写一些代码,但由于某种原因,当我在程序中使用上面的示例时,所有内容都被删除了。我的程序哪里出了问题?

这是我的代码:

public static ArrayList<String> findIngredients(String foodInStock, ArrayList<String> ingredients){
ArrayList<String> ingredientsNotFound = new ArrayList<String>();
int i = 0;
for (; i < ingredients.size(); i++) {
for (int x = 0; x < foodInStock.length()-(ingredients.get(i).length())+1; x++) {
if (ingredients.get(i) == foodInStock.substring(x, (x + ingredients.get(i).length()))) {
ingredients.remove(i);
i = 0;
break;
}
}
}
ingredients = ingredientsNotFound;
return ingredientsNotFound;
}

最佳答案

我认为这里有两个主要内容。

首先,构建最终结果的方式。您当前正在从原始输入中删除项目;更好的策略是将项目添加到新列表中(部分是因为它更容易思考,部分是因为您通常不想在迭代列表时修改列表)。

您也可能不小心用末尾的空列表覆盖了您的列表。

第二,判断该成分是否在字符串输入中的方法。您可以使用 indexOf() 方法来查看字符串是否包含当前项目,而不是循环遍历整个字符串并检查子字符串。

public static ArrayList<String> findIngredients(String foodInStock, ArrayList<String> ingredients) {
ArrayList<String> results = new ArrayList<>();
for (String ingredient : ingredients) {
if (foodInStock.indexOf(ingredient) == -1) {
results.add(ingredient);
}
}
return results;
}

这里我们为结果初始化一个新列表。然后,我们循环遍历输入列表中的每个成分,并询问该成分是否存在于字符串输入中。如果不是(indexOf() 返回-1),我们将其添加到结果列表中。最后,结果包含所有未找到的成分。

关于java - 为什么所有内容都从我的数组列表中删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59697141/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com