练习是为一个班级创建一个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,但是在它说这个数字已经存在之后,它仍然不允许我输入一个新的数字。
答案 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;
}
}
}