比较数组列表中的两个元素

时间:2015-11-06 19:45:17

标签: java arraylist while-loop

练习是为一个班级创建一个arraylist,用户可以输入“Guestnumber”+“Guestname”+“Guestemail”。

如果我用Guestnumber 1创建一个新的Guest,那么一切正常。该程序应该告诉我“Guestnumber已存在,请选择一个新的”。我很谨慎,并且没有得出结论:

public void gastAnlegen() {
    boolean pruef1 = true;
    boolean pruef2 = true;
    boolean pruef3 = true;
    boolean gastNummerPruefung = false; 
    while(gastNummerPruefung != true) {
        gastNummerPruefung = true;


    while (pruef1 != false) {
        System.out.println("Bitte Gästenummer eingeben: ");
        String gNr = input.next();
        try {
            gast = Integer.parseInt(gNr);
        } catch (NumberFormatException e) {
            continue;
        }
        pruef1 = false;
        for (Gast test : verwaltungG) {
            if (gast == test.getgNr()) {
                System.out.println("Diese Nummer ist leider schon vergeben");
                gastNummerPruefung = false;
            }
        }

        }
    }

现在的问题是它不会再告诉我一遍又一遍地进入Guestnumber(“BitteGästenummereingeben”),所以它有点停在那里。

我添加了“更大”的while循环来测试数字是否存在。

错误在哪里?

Gast是获取的类,设置

gastNmmerPruefung循环的布尔值

在我添加大循环之前,它运行良好。

编辑:好的,我发现了一个问题,我不得不在很长一段时间后将“gastNmmerPruefung”改为true,但是在它说这个数字已经存在之后,它仍然不允许我输入一个新的数字。

3 个答案:

答案 0 :(得分:0)

如果您发现已经使用该号码进入内部while循环,您还需要将pruef1更改回true:

    for (Gast test : verwaltungG) {
        if (gast == test.getgNr()) {
            System.out.println("Diese Nummer ist leider schon vergeben");
            gastNummerPruefung = false;
            pruef1 = true;
        }
    }

答案 1 :(得分:0)

你真的只需要一个布尔值来检查。从用户那里获取号码,检查一下,如果找到了,请再次询问,否则就完成了。

试试这个:

while(!gastNummerPruefung)
{
    System.out.println("Bitte Gästenummer eingeben: ");
    String gNr = input.next();
    try
    {
        gast = Integer.parseInt(gNr);
    }
    catch (NumberFormatException e)
    {
        continue;
    }

    for (Gast test : verwaltungG)
    {
        if (gast == test.getgNr())
        {
            System.out.println("Diese Nummer ist leider schon vergeben");
            gastNummerPruefung = false;
        }
        else
            gastNummerPruefung = true;
    }
}

答案 2 :(得分:0)

你应该检查第一个内循环.. 试试这个。你必须面对第二个内循环的问题

while(gastNummerPruefung != true) 
gastNummerPruefung = false;
while (pruef1 != false) {
    System.out.println("Bitte Gästenummer eingeben: ");
    String gNr = input.next();
    try {
        gast = Integer.parseInt(gNr);
    } catch (NumberFormatException e) {
        continue;
    }
    pruef1 = true;  // change this in your code
    for (Gast test : verwaltungG) {
        if (gast == test.getgNr()) {
            System.out.println("Diese Nummer ist leider schon vergeben");
            gastNummerPruefung = false;
        }
    }

    }