2017-12-16 31 views
1

나는이 질문에 대한 답을 찾기 위해 주변을 둘러 보았으므로 알아낼 수 없었다. 나는이 문제가 내 코드의 '범위'에있는 것으로 보이지만 내가 무엇을 잘못하고 있는지 알지 못하고 실제로 도움을받을 수 있다고 생각한다. 나는 Java에 매우 익숙하다. 객체가 이미 추가하기 전에 배열에 존재하는지For 루프가 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을 반환했을 때 그것을 기대 했었습니다. 그것은 그것의 끝일 것입니다.

이 문제를 해결할 수있는 조언을 보내 주시면 감사하겠습니다.

편집 : 당신은 당신이 루프를 통해 반복하고있는 객체와 함수의 서명에서 매개 변수 business 마스킹 된

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; 
} 

'비즈니스'클래스

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; 
} 
} 
+0

** 비즈니스 ** ** arraylist 또는 무엇입니까? – Developer

+0

'business.getPerson()','business.getBusiness()'및'business.getLocation()'은 무엇을 반환합니까? –

+0

나는 사업체의 배열을 가지고있다. 사업체가 만들어지면 사람과 사업체가 주어진다. 이 getPerson는 getBusiness이 의 getLocation 그들은 내 비즈니스 오브젝트의 '게터'방법이야 문자열을 반환하는 문자열을 반환하는 문자열을 반환합니다. "배열의 객체를 살펴보고 그 이름을 가진 사람이 이미 있는지 확인합니다. 그럴 경우 해당 이름의 비즈니스가 이미 있는지 확인합니다. 해당 위치가 이미 존재하는 경우. " - 모든 정보가 일치하면 비즈니스가 이미 배열에 존재해야합니다. –

답변

1

는보십시오. 이 이름을 b으로 변경하면 문제가 발생하지 않습니다.

+0

하지만 그 차이점은 무엇입니까? – Developer

+0

여기에서는 비즈니스 비즈니스가 비즈니스 b로 바뀝니다. xD – hsnsd

+0

addBusiness (..)에는 문자열 매개 변수 비즈니스가 있고 for 루프는 비즈니스 비즈니스를 만듭니다 .... !!!! 비즈니스 개체가 확실합니다 ... 문자열 또는 비즈니스 유형인지 확실하지 않습니다 ... –

1

오케이 - 그래서 생각했습니다. 이 문제에 도움을 주신 모든 분들께 진심으로 감사드립니다.

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; 
} 

:

올바른 코드가 같은 것을해야한다.