[英]What am I doing wrong with my For loop in java?
我一直在尋找有關此問題的一些答案,但我似乎無法弄清楚。 我認為問題似乎出在我代碼的“作用域”上,但我不知道自己在做什么錯,我真的可以使用一些幫助。 我是Java的新手。
我的目標
在添加對象之前,請測試以查看對象是否已存在於數組中。
如果對象已存在於數組中,則返回null。
如果它在數組中不存在,請創建它,然后將其返回。
編碼
public Business addBusiness(String person, String business, String location) {
int id = 0;
for (Business business : businesses ) {
if (business.getPerson().equals(person)) {
if (business.getBusiness().equals(business)) {
if (business.getLocation().equals(location)) {
return null;
}
}
}
}
Business newBusiness = new Business(person, business, location, id);
return newBusiness;
}
運行它會發生什么
當我運行代碼時,它將很高興地用相同的細節在一個接一個的對象之間創建對象。 這使我相信我的邏輯存在問題。 我期望當它返回null時,它將結束。
如果您能為我提供解決此問題的提示,我將不勝感激。
編輯:“商務”類
public class Business {
// Attributes //
private String person, business, location;
private int id;
// Constructor //
public Business(String person, String business, String location, int id) {
this.person = person;
this.business = business;
this.location = location;
this.id = id;
}
// Getters //
public String getPerson() {
return person;
}
public String getBusiness() {
return business;
}
public String getLocation() {
return location;
}
public int getId() {
return id;
}
}
嘗試
public Business addBusiness(String person, String business, String location)
{
int id = 0;
for (Business b : businesses ) {
if (b.getPerson().equals(person)) {
if (b.getBusiness().equals(business)) {
if (b.getLocation().equals(location)) {
return null;
}
}
}
}
Business newBusiness = new Business(person, business, location, id);
return newBusiness;
}
您正在使用要在循環中迭代的對象來屏蔽函數簽名中的參數business
。 將其重命名為b
可以避免此問題。
好的-我想我已經知道了。 非常感謝大家在此問題上的幫助。
public Business addBusiness(String person, String business, String location)
{
int id = 0;
for (Business business : businesses ) {
if (business.getPerson().equals(person)) {
if (business.getBusiness().equals(business)) {
if (business.getLocation().equals(location)) {
return null;
}
}
}
}
Business newBusiness = new Business(person, business, location, id);
return newBusiness;
}
造成此問題的原因是,一旦創建newBusiness對象,我便從未真正將其添加到數組中。 因此,每次運行它都將永遠不會與現有條目匹配,因為數組中沒有條目。
正確的代碼應類似於:
public Business addBusiness(String person, String business, String location)
{
int id = 0;
for (Business b : businesses ) {
if (b.getPerson().equals(person)) {
if (b.getBusiness().equals(business)) {
if (b.getLocation().equals(location)) {
return null;
}
}
}
}
Business newBusiness = new Business(person, business, location, id);
b.add(newBusiness); // This was the missing line, now it seems to work fine.
return newBusiness;
}
顯然,我還有很多東西要學。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.