2017-04-26 61 views
0

我有一個問題,現在我試圖解決大約一個星期,但沒有得到幾乎任何地方。所以我決定問「強大」的Stackoverflow。很抱歉,如果這對於有經驗的JAVA編碼員來說似乎微不足道。JAVA ArrayList類實例成員檢查存在成員

我有一個擴展自定義類的ArrayList對象。我的班級名爲「AddMitglied」,旨在將成員存儲在我的程序中。用戶將添加新成員,並將它們存儲在ArrayList中。

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

很顯然,我想抓住某種成員數量(公衆詮釋addNumber),以便能夠通過

mitgliederliste.get(i).addNumber 

讓每個成員到目前爲止好,..我可以添加成員。另外,我想檢查用戶輸入新成員時是否已經存在成員編號。 要檢查是否有「INT」被輸入到我寫了下面的方法的程序:

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

到目前爲止,這也能正常工作。現在我的問題是,如何檢查,如果用戶輸入一個數&檢查如果這個數字已經存在於我的Arraylist中,以避免使用相同用戶數量的用戶數量增加......我大量搜索了Google,但不知何故,這些數據並沒有找到合適的解決方案。

我在這裏找到的是以下問題:Check if a value exists in ArrayList。在那裏我瞭解到有一種所謂的「包含」方法。但在那裏,他已經知道里面使用哪一個包含。我不能使用「contains」方法,因爲我不知何故必須遍歷所有成員並檢查是否已經有成員編號。如果這樣的話,用戶必須留在一個循環內強迫他選擇另一個。

我在網上發現了一個網站,告訴我如何做到這一點:http://crunchify.com/how-to-iterate-through-java-list-4-way-to-iterate-through-loop/但他在那裏用字符串迭代ArrayList,這很容易但不直接到達我的問題點。這裏提到的方法是

java.util.stream.Stream.forEach 

但不知道如何在我的具體示例中使用這個。

+0

「我不能使用」contains「方法,因爲我不知何故必須循環」爲什麼?這部分你的問題不清楚 – 2017-04-26 20:38:48

回答

1

如果當前用戶尚未使用addNumber(如果我理解正確),您只希望用戶在mitgliederliste內大聲朗讀。

您需要檢查用戶選擇的addNumber是否與mitgliederliste中的當前用戶無關。

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

    if (a.addNumber == inputnumber) { 

     return false; 
    } 
    } 
return true; 

}

當您while循環包括它;

int inputnumber = 0; 

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

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

非常感謝你,這就是我的意思。但不知何故,當我在代碼中實現這些方法時,我遇到了範圍問題。 NetBeans讓我定義一個局部變量「mitgliederliste」。我發現這個http://stackoverflow.com/questions/10976212/arraylist-as-global-variable,但不知道如何做到這一點。我在谷歌上沒有發現任何東西使ArrayList成爲全局的,這樣我的類中的所有方法都可以直接訪問它。 – BayerischerSchweitzer

+0

'mitgliederliste'是你的AddMitglied集合,將它添加到'isValid'作爲參數 – 2017-04-27 19:14:13

+0

我更新了答案。如果使用菱形符號,則可能是'ArrayList '而不是參數類型。 – 2017-04-27 19:28:46