在while或者do-while循环中使用hasNaxtInt(),当输入的值非int数据类型时,会导致程序直接结束,而不是重新循环(详见
Eg
)。如果输入非int数据类型时,在里面添加循环条件成立因素,这会陷入死循环(详见
Eg2
)。使用时要慎重。
Eg:
//输入1——7正确显示数据,其他重新输入,输入0时结束(if+switch)
int csz=0;
String t=””;
do
{
System.out.println(“请输入数字1——7(输入0结束):”);
if(input.hasNextInt()==true) {
csz=input.nextInt();
if(csz>0&&csz<=7) {
switch (csz)
{
case 1:
t=”MON”;
System.out.println(“今天是 “+t);
break;
case 2:
t=”TUE”;
System.out.println(“今天是 “+t);
break;
case 3:
t=”WEB”;
System.out.println(“今天是 “+t);
break;
case 4:
t=”THU”;
System.out.println(“今天是 “+t);
break;
case 5:
t=”FRI”;
System.out.println(“今天是 “+t);
break;
case 6:
t=”SAT”;
System.out.println(“今天是 “+t);
break;
case 7:
t=”SUN”;
System.out.println(“今天是 “+t);
break;
}
}else if (csz!=0&&csz>7) {
System.out.println(“您输入的数字有误,请重新输入!”);
}
}else {
System.out.println(“您输入的数字有误,请重新输入!”);
}
} while (
csz!=0
);
System.out.println(“程序结束!”);
Eg2:
//输入1——7正确显示数据,其他重新输入,输入0时结束(if+switch)
int csz=0;
String t=””;
do
{
System.out.println(“请输入数字1——7(输入0结束):”);
if(input.hasNextInt()==true) {
csz=input.nextInt();
if(csz>0&&csz<=7) {
switch (csz)
{
case 1:
t=”MON”;
System.out.println(“今天是 “+t);
break;
case 2:
t=”TUE”;
System.out.println(“今天是 “+t);
break;
case 3:
t=”WEB”;
System.out.println(“今天是 “+t);
break;
case 4:
t=”THU”;
System.out.println(“今天是 “+t);
break;
case 5:
t=”FRI”;
System.out.println(“今天是 “+t);
break;
case 6:
t=”SAT”;
System.out.println(“今天是 “+t);
break;
case 7:
t=”SUN”;
System.out.println(“今天是 “+t);
break;
}
}else if (csz!=0&&csz>7) {
System.out.println(“您输入的数字有误,请重新输入!”);
}
}else {
System.out.println(“您输入的数字有误,请重新输入!”);
csz=1;
}
} while (
csz!=0
);
System.out.println(“程序结束!”);