一、问题简介
假定在一场游戏中,用户只能输入1-中的一个整数,但是用户在玩游戏过程中,输入的不是数字或者数字不在1-3这个范围内,如何用java处理这个问题呢?
二、 代码逻辑简介
方案一:
1、提示用户输入的内必须1-3中的一个整数;
2、判断用户输入的类是否为整数类型
如果是整数类型,判断用户输入的数字是否在规定的范围内。如果不是,让其重新输入。
用户输入的内容不是整数类型,提示用户输入错误,让其重新输入;
3、在以上方法内,套一个while循环。使其重复输入
方案二:
1、提示用户输入的内必须1-3中的一个数字;
2、用户输入的不是整数,劫持异常,并返回该方法
3、用户输入的是整数,但是不在规定的范围,返回方法
三、知识点
方案一:
while循环和if判断语句
判断用户输入的类型是否为整数:input.hasNextInt()){};
方案二:
使用异常处理方式try catch、递归方法。
代码
方案 一:
package homework;
import java.util.Scanner;
public class Demo5 {
public static void main(String[] args) {
int a;
while (true) {
Scanner input = new Scanner(System.in);
System.out.println("请输入一个在1-3范围的整数"); //正确接收用户输入的内容
if (input.hasNextInt()) {
int b=input.nextInt();
if (b>0 && b<4) {
a=b;
break ;
}else {
System.out.println("输入的数字不在规定的范围,请重新输入");
}
}else {
System.out.println("输入的不是数字错误,请重新输入");
}
}
}
}
方案二:
package homework;
import java.util.InputMismatchException;
import java.util.Scanner;
public class Demo2 {
public static void main(String[] args) {
int a= say();
System.out.println(a);
}
private static int say() {
try{
System.out.println("请输入一个1-3的数字");
Scanner input = new Scanner(System.in);
int a=input.nextInt();
if(a>0 && a<4){
return a;
}else{
System.out.println("你输入的数字不在规定的范围内。");
return say();
}
}
catch(InputMismatchException e){
System.out.println("你输入的不是数字,请重新输入");
return say();
}
}
}