JAVA ArrayList类实例成员检查是成员存在

时间:2017-04-26 20:35:50

标签: java arraylist

我有一个问题,我现在试图解决大约一个星期,但几乎没有得到任何地方。所以我决定问"强大"堆栈溢出。对不起,如果这对经验丰富的JAVA程序员来说似乎微不足道。

我有一个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;
    }  
}

显然我想要获取某种成员编号(public int 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中是否已存在该号码,以避免使用相同用户号码的多个用户...我搜索了很多但是不知何故没有得到任何合适的解决方案。

我在这里找到的是以下问题:Check if a value exists in ArrayList。在那里,我了解到有一个所谓的"包含"方法。但他已经知道里面使用哪一个包含。我不能使用"包含"方法,因为我不知何故必须遍历所有成员并检查是否已有成员编号。如果是这样,用户必须留在循环中以迫使他选择另一个。

我在网上发现了一个网站,它告诉我如何执行此操作:http://crunchify.com/how-to-iterate-through-java-list-4-way-to-iterate-through-loop/但是在那里他使用字符串迭代一个ArrayList,这很容易但不直接解决我的问题。这里提到的方法是

java.util.stream.Stream.forEach

但不知道如何在我的具体例子中使用它。

1 个答案:

答案 0 :(得分:1)

如果我理解正确,如果当前用户尚未使用mitgliederliste,您希望用户只在addNumber内大声朗读。

您需要检查用户选择的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();
}