java中循环的一个小示例
while循环判断用户的输入是否是数字
- 有这样一道题目:
循环和switch选择结构,初学的学生,做起来感觉比较难,如果不考虑用户输入非数字的情况,代码如下:
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("请输入数字1-7,(0退出):");
int num = input.nextInt();
String day = "";
while (num != 0) {
switch (num) {
case 1:
day = "MON";
break;
case 2:
day = "TUE";
break;
case 3:
day = "WED";
break;
case 4:
day = "THU";
break;
case 5:
day = "FRI";
break;
case 6:
day = "SAT";
break;
case 7:
day = "SUN";
break;
default:
day = "0"; //输入非0-7的数字时,先不处理
break;
}
if (!day.equals("0")) { //判断结束后再确定输出内容
System.out.println("今天是:" + day);
} else {
System.out.println("输入错误!");
}
System.out.print("请输入数字1-7,(0退出):");
num = input.nextInt();
}
System.out.println("谢谢使用,再见");
}
其中为了解决用于输入非0-7的数字时可以正确提示,在default那里,用day ="0"来临时处理,并在后面输出时进行判断,运行效果如下:
请输入数字1-7,(0退出):1
今天是:MON
请输入数字1-7,(0退出):2
今天是:TUE
请输入数字1-7,(0退出):9
输入错误!
请输入数字1-7,(0退出):0
谢谢使用,再见
基本符合题目要求
但是当用户输入非数字时,会报错,原因是没有处理非数字输入的情况;
于是,考虑到Scanner 对象有个hasNextInt()方法可以判断用户输入的是否是一个整数,来进行处理,完美解决用户的非数字输入问题,当然,代码不是很简洁,但是主要是为了解决问题,还有,刚开始学习循环和分支选择的同学,还没有学如何进行异常处理,就没有用到try
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入数字1-7:0退出:");
int num = 0;
while (true){
if(!input.hasNextInt()){
System.out.print("请输入正确的数字:");
String a1 = input.next(); //必须接收输入,这句不可缺少,否则死循环
}else{
break;
}
}
num = input.nextInt();
String day = "";
while (num != 0) {
switch (num) {
case 1:
day = "MON";
break;
case 2:
day = "TUE";
break;
case 3:
day = "WED";
break;
case 4:
day = "THU";
break;
case 5:
day = "FRI";
break;
case 6:
day = "SAT";
break;
case 7:
day = "SUN";
break;
default:
day = "0";
break;
}
if (!day.equals("0")) {
System.out.println("今天是:" + day);
} else {
System.out.println("输入错误!");
}
System.out.print("请输入数字1-7,(0退出):");
while (true){
if(!input.hasNextInt()){
System.out.print("请输入正确的数字:");
String a1 = input.next(); //不能省略
}else{
break;
}
}
num = input.nextInt();
}
System.out.println("谢谢使用,再见");
}
运行结果如下:
其中while(true)循环判断用户的输入是否是整数;
下面的 input.next()必须要有,否则就无限死循环。