簡體   English   中英

我在Java中的For循環在做什么?

[英]What am I doing wrong with my For loop in java?

我一直在尋找有關此問題的一些答案,但我似乎無法弄清楚。 我認為問題似乎出在我代碼的“作用域”上,但我不知道自己在做什么錯,我真的可以使用一些幫助。 我是Java的新手。

我的目標

  1. 在添加對象之前,請測試以查看對象是否已存在於數組中。

  2. 如果對象已存在於數組中,則返回null。

  3. 如果它在數組中不存在,請創建它,然后將其返回。

編碼

    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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM