1

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

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

我应该使用 try and catch 吗?try 中的方法,当它失败时,catch 会抛出错误消息并重新启动项目创建菜单?我该怎么做?我一直在搜索并在这里找到了一个有趣的整数方法: Java 中没有用户输入的异常处理

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

我一直在这个网站上搜索并搜索谷歌,但我没有找到我需要的东西或者比我所了解的更复杂的东西,而且英语不是我的母语,所以我的搜索可能有点偏离。

谢谢你的时间!

4

1 回答 1

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

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

于 2018-05-09T22:05:36.957 回答