2017-04-26 9 views
0

Ich habe ein Problem, das ich jetzt versuchte, für etwa eine Woche zu lösen, aber nicht fast überall zu bekommen. Deshalb habe ich beschlossen, "mächtig" Stackoverflow zu fragen. Es tut mir leid, wenn das für erfahrene JAVA-Programmierer trivial ist.JAVA ArrayList Klasse Instanz Mitglied Prüfung ist Mitglied existiert

Ich habe ein ArrayList-Objekt, das eine benutzerdefinierte Klasse erweitert. Meine Klasse heißt "AddMitglied" und soll Mitglieder in meinem Programm speichern. Der Benutzer fügt neue Mitglieder hinzu und diese werden in einer ArrayList gespeichert.

paket mitgliederverwaltung;

public class AddMitglied { 

    public String addLastName; 
    public int addmemberNumber; 
    public String addFirstName; 
    public String adddateobBirth; 
    public String addstreet; 
    public int addNumber; 
    public int addPlz; 
    public String addtown; 
    public String addEmailadresse; 
    public int addTelefonnumber; 

    AddMitglied(String addLastName,int addmemberNumber,String addFirstName, 
       String adddateobBirth,String addstreet,int addNumber, 
       int addPlz,String addtown,String addEmailadresse, 
       int addTelefonnumber) 
    { 
     this.addLastName = addLastName; 
     this.addmemberNumber = addmemberNumber; 
     this.addFirstName = addFirstName; 
     this.adddateobBirth = adddateobBirth; 
     this.addstreet = addstreet; 
     this.addNumber = addNumber; 
     this.addPlz = addPlz; 
     this.addtown = addtown; 
     this.addEmailadresse = addEmailadresse; 
     this. addTelefonnumber = addTelefonnumber; 
    } 
} 

Offensichtlich möchte ich eine Art Mitgliedsnummer (public int AddNumber) greifen zu können, jedes Mitglied erhalten über

mitgliederliste.get(i).addNumber 

so weit so gut, .. Ich Mitglieder hinzufügen können. Ich möchte auch überprüfen, ob eine Mitgliedsnummer bereits existiert, wenn ein Benutzer ein neues Mitglied eingibt. Um zu überprüfen, ob ein „int“ in das Programm eingegeben wird, ich die folgende Methode geschrieben haben:

public static int validateinputUser(){ 

     System.out.println("give a number (only numeric values allowed): "); 
     Scanner inputUser = new Scanner(System.in); 
      int inputnumber = 0; 

       while (!inputUser.hasNextInt()) 
        { 
         inputUser.next(); 
         System.out.println("please enter numeric value"); 
        } 
       inputnumber = inputUser.nextInt(); 
       return 0; 
     } 
    } 

diese Bisher funktioniert auch gut .. Nun mein Problem ist, wie man überprüfen, ob eine Benutzereingabe eine Anzahl & Prüfung ist wenn die Nummer in meinem Arraylist bereits existiert, um mehrere Benutzer mit der gleichen Benutzernummer zu vermeiden ... habe ich viel gegoogelt, aber irgendwie kam ich nicht in die Nähe einer passenden Lösung.

Was ich hier gefunden habe, ist die folgende Frage: Check if a value exists in ArrayList. Dort habe ich gelernt, dass es eine sogenannte "contains" -Methode gibt. Aber da wusste er schon, welches im Inneren zu verwenden ist. Ich kann die "contains" -Methode nicht verwenden, da ich irgendwie alle Mitglieder durchlaufen muss und prüfen muss, ob man bereits die Mitgliedsnummer hat. Wenn der Benutzer in einer Schleife bleiben muss, um ihn zu zwingen, eine andere auszuwählen.

Ich habe eine Website im Internet gefunden, die mir sagt, wie man das macht: http://crunchify.com/how-to-iterate-through-java-list-4-way-to-iterate-through-loop/ aber er iteriert über eine ArrayList mit Strings, die einfach ist, aber nicht direkt auf den Punkt meines Problems. Eine dort erwähnte Methode ist

java.util.stream.Stream.forEach 

aber keine Ahnung, wie man das in meinem konkreten Beispiel benutzt.

+0

"Ich kann nicht verwenden" enthält "Methode, weil ich irgendwie Schleife" warum? Dieser Teil von dir Frage ist nicht klar –

Antwort

1

Sie möchten, dass Benutzer nur innerhalb der mitgliederliste laut sein, wenn ein aktueller Benutzer die addNumber nicht bereits verwendet, wenn ich richtig verstehe.

Sie müssen überprüfen, ob addNumber, die der Benutzer auswählt, sich nicht auf einen aktuellen Benutzer in mitgliederliste bezieht.

public static boolean isValid(int inputnumber, ArrayList mitgliederliste) { 
    for (AddMitglied a : mitgliederliste) { 

    if (a.addNumber == inputnumber) { 

     return false; 
    } 
    } 
return true; 

}

Um es mit Ihrer while-Schleife zu umfassen;

int inputnumber = 0; 

while (inputnumber == 0 || !isValid(inputnumber)) { 

    while (!inputUser.hasNextInt()) {       
     inputUser.next(); 
     System.out.println("please enter numeric value"); 
    } 
    inputnumber = inputUser.nextInt(); 
} 
+0

Hallo vielen Dank, das ist, was ich meinte. Aber irgendwie bekomme ich Scoping-Probleme, wenn ich diese Methoden in meinen Code implementiere. NetBeans fordert mich auf, eine lokale Variable "mitgliederliste" zu definieren. Ich habe dies gefunden http://stackoverflow.com/questions/10976212/arraylist-as-global-variable aber nicht sicher, wie dies zu tun ist. Ich habe bei Google nichts gefunden, um eine ArrayList global zu machen, so dass alle Methoden innerhalb meiner Klasse direkt darauf zugreifen können. – BayerischerSchweitzer

+0

'mitgliederliste' ist deine Sammlung von' AddMitglied', füge sie zum 'isValid' als Argument hinzu –

+0

Ich habe die Antwort aktualisiert. Wenn Sie die Diamant-Notation verwenden, könnte es anstelle des Argumenttyps "ArrayList " sein. –

Verwandte Themen