Сначала я два объекта созданы как так ...Использование равных для проверки Массивы объектов
Recipe recipeOne = new Recipe("Pepperoni Pizza");
Ingredient one = new Ingredient("Dough", 1, UnitOfMeasurement.valueOf("Pounds"));
Ingredient two = new Ingredient("Sauce", 8, UnitOfMeasurement.valueOf("Ounces"));
Ingredient three = new Ingredient("Cheese", 10, UnitOfMeasurement.valueOf("Ounces"));
recipeOne.addIngredient(one);
recipeOne.addIngredient(two);
recipeOne.addIngredient(three);
RecipeBook.addRecipe(recipeOne);
Recipe recipeTwo = (Recipe) recipeOne.clone();
recipeTwo.addIngredient(recipeOne.Ingredients[0]);
recipeTwo.addIngredient(recipeOne.Ingredients[1]);
recipeTwo.addIngredient(recipeOne.Ingredients[2]);
RecipeBook.addRecipe(recipeTwo);
recipeTwo.setName("Pineapple Pizza");
Никаких сюрпризов здесь все очевидно, что происходит, но затем я хочу, чтобы проверить их на равенство! И я ищу, чтобы проверить все их элементы, очевидно, чтобы убедиться, действительно ли они равны или нет. Поэтому я называю «System.out.println (recipeOne.equals (recipeTwo)); который будет идти здесь ...
public boolean equals(Object obj){
if(obj instanceof Recipe){
Recipe tempRec = (Recipe) obj;
for(int j = 0 ; j < Ingredients.length ; j++){
if(Ingredients[j].equals(tempRec.Ingredients[j]) == true){
return true;
}
}
}
return false;
}
Теперь я знаю, что она неполна и будет проверять только первый ингредиент в recipeOne который «Ингредиенты []» и первый ингредиент в recipeTwo, копия, «tempRec.Ingredients []». Теперь мой вопрос: как проверить остальные местоположения и убедиться, что все они равны, прежде чем отправлять «правильное равенство»? Есть ли способ вернуться в цикл for и проверить следующее место, возможно, сохранить все истины, тогда, когда все они будут поняты и, наконец, вернутся? Я бы предпочел не выписывать 10 утверждений, проверяющих все местоположения, независимо от того, являются ли они нулевыми или нет, а затем проверяет, равны ли ингредиенты lol
(Почти забыл свой Ingredient.equals(), здесь он для справки но он работает отлично)
public boolean equals(Object obj){
if(obj instanceof Ingredient){
Ingredient tempIngred = (Ingredient) obj;
if(Name.equals(tempIngred.getName()) && Quantity == (tempIngred.getQuantity()) &&
unitOfMeasurement.equals(tempIngred.getUnit()))
return true;
}
return false;
}
Не хочу ли я все же оставить этот последний возврат ложным и вернуть значение true после цикла for? Я все еще хочу убедиться, что объект, который я передаю, фактически является объектом Рецепта – Sherifftwinkie