2017-12-16 7 views
1

Ich habe nach einigen Antworten auf diese Frage gesucht und ich kann es einfach nicht herausfinden. Ich denke, das Problem scheint mit dem "Umfang" meines Codes zu sein, aber ich weiß nicht, was ich falsch mache, und ich könnte wirklich Hilfe gebrauchen. Ich bin sehr neu in Java.Was mache ich falsch mit meiner For-Schleife in Java?

Mein Ziel

  1. -Test, um zu sehen, ob ein Objekt in einem Array existiert bereits vor der Zugabe.

  2. Wenn das Objekt bereits im Array vorhanden ist, geben Sie null zurück.

  3. Wenn es im Array nicht existiert, erstellen Sie es und geben Sie es zurück.

Der Kodex

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

Was passiert, wenn ich es laufen

Wenn ich den Code ausführen wird es nur glücklich Objekt nach Objekt mit den gleichen Details erstellen. Dies führt mich zu der Annahme, dass es ein Problem mit meiner Logik gibt. Ich habe erwartet, dass wenn es null zurückgibt, das das Ende davon wäre.

Ich würde mich über alle Tipps freuen, die Sie mir bei der Lösung dieses Problems geben können.

EDIT: Die 'Business' Klasse

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

ist ** Unternehmen ** ist Arraylist oder was? – Developer

+0

Was gibt 'business.getPerson()', 'business.getBusiness()' und 'business.getLocation()' zurück? –

+0

Ich habe eine Reihe von Geschäftsobjekten, wenn ein Unternehmen erstellt wird, erhält es eine Person ein Geschäft und einen Standort. getPerson gibt einen String getBusiness gibt einen String zurück getLocation eine Zeichenfolge zurück Sie die 'Getter' Methoden für mein Business-Objekt sind. Ich versuche zu sagen "Schaue durch die Objekte im Array und überprüfe, ob eine Person mit diesem Namen bereits existiert. Wenn dies der Fall ist, überprüfe, ob ein Geschäft mit diesem Namen bereits existiert. Wenn ja, überprüfe, ob es existiert wenn dieser Ort bereits existiert. " - Wenn alle Informationen übereinstimmen, muss das Geschäft bereits im Array vorhanden sein. –

Antwort

1

Versuchen

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

Sie wurden die Parameter maskieren business aus der Signatur der Funktion mit dem Objekt, das Sie in der Schleife sind iterieren. Das Umbenennen in b vermeidet das Problem.

+0

Aber was ist der Unterschied zwischen ihnen? – Developer

+0

In diesem Geschäft wird Business Business durch Business b ersetzt. xD – hsnsd

+0

addBusiness (..) hat einen String param business und Ihre for-Schleife schafft ein Business-Geschäft .... !!!! So haben Sie Business-Objekt sicher ... nicht sicher, ob das war String oder Business ... –

1

Okay - so denke ich, dass ich es herausgefunden habe. Vielen Dank an alle für Ihre Hilfe in dieser Angelegenheit.

Das Problem wurde verursacht, weil ich nie mein NewBusiness-Objekt tatsächlich in das Array hinzugefügt, nachdem es erstellt wurde. Jedes Mal, wenn es ausgeführt wurde, würde es niemals mit einem vorhandenen Eintrag übereinstimmen, da keine Einträge im Array vorhanden waren.

Der richtige Code sollte so etwas wie sein:

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

Klar, ich habe noch viel zu lernen.