处理初学者的用户输入时的异常处理

时间:2018-05-09 21:44:03

标签: java exception try-catch

我必须在商店里做一个小程序,我必须在商店客户收集中添加新客户,向商店库存添加新商品,编辑它们等,所以我使用用户输入(扫描仪)来创建这个新的对象。我已经拥有了我需要的所有方法,没有例外。

我想要一些简单的java异常处理,当用户引入一个字符串时,他应该输入一个整数或反之亦然。 例如,如果我正在执行一个为商店创建项目的方法,当我要求用户引入股票(整数)时,用户键入hello而不是程序崩溃的数字,我想处理异常,显示错误消息,不要创建对象并从开始重新启动项目创建方法(或重新启动它之前的子菜单)

我应该使用try和catch吗?在try中的方法,当它失败时捕获抛出错误消息并重新启动项目创建菜单?我该怎么办?我一直在寻找并找到一个有趣的整数方法: Exception Handling for no user input in Java

问题是我不知道如何在为用户引入ID时处理可能的异常(这将是一个由8个数字和一个字母组成的字符串,例如:13234354A,所以我怎么能显示一个如果用户将“sjadsjasdj”作为ID而不是某种真实的东西引入错误,或者在创建此对象时使用的一些枚举或布尔变量的异常处理等错误。

我一直在寻找这个网站并搜索谷歌但我没有找到我需要的东西,或者比我的小知识更复杂,英语也不是我的母语所以我的搜索可能有点关闭。

谢谢你的时间!

1 个答案:

答案 0 :(得分:0)

当您正在阅读输入时,只需读取整个ID 123A,并使用例如Character.isDigit()和Character.isLetter()验证每个字符是否有效。带有4个字母的案例

import java.util.Scanner;
public class Test {
    public static void main(String[]args) {
        boolean flag = false;
        Scanner kb = new Scanner(System.in);
        while(!flag) {
            String id = kb.next();//To get the next word
            flag = true;//by default its assumed to be valid input
            if(id.length() == 4) {
                for(int i = 0; i < 3; i++) {
                    if(!Character.isDigit(id.charAt(i))) {
                        flag = false;
                    }
                }
                if(!Character.isLetter(id.charAt(3))) {
                    flag = false;
                }
            }
            else {
                flag = false;
            }
            System.out.println("ID is "+ (flag == true?"Valid":"Invalid"));
        }
    }
}

输出

1234
ID is Invalid
123A
ID is Valid

如果你想要或者只是循环回到开头以获取新的输入,你可以在最后抛出你自己的错误。