两种方法处理用户输入错误

一、问题简介

假定在一场游戏中,用户只能输入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();
        }
    }
}

你可能感兴趣的:(java基础,java)