我必须在商店里做一个小程序,我必须在商店客户收集中添加新客户,向商店库存添加新商品,编辑它们等,所以我使用用户输入(扫描仪)来创建这个新的对象。我已经拥有了我需要的所有方法,没有例外。
我想要一些简单的java异常处理,当用户引入一个字符串时,他应该输入一个整数或反之亦然。 例如,如果我正在执行一个为商店创建项目的方法,当我要求用户引入股票(整数)时,用户键入hello而不是程序崩溃的数字,我想处理异常,显示错误消息,不要创建对象并从开始重新启动项目创建方法(或重新启动它之前的子菜单)
我应该使用try和catch吗?在try中的方法,当它失败时捕获抛出错误消息并重新启动项目创建菜单?我该怎么办?我一直在寻找并找到一个有趣的整数方法: Exception Handling for no user input in Java
问题是我不知道如何在为用户引入ID时处理可能的异常(这将是一个由8个数字和一个字母组成的字符串,例如:13234354A,所以我怎么能显示一个如果用户将“sjadsjasdj”作为ID而不是某种真实的东西引入错误,或者在创建此对象时使用的一些枚举或布尔变量的异常处理等错误。
我一直在寻找这个网站并搜索谷歌但我没有找到我需要的东西,或者比我的小知识更复杂,英语也不是我的母语所以我的搜索可能有点关闭。
谢谢你的时间!
答案 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
如果你想要或者只是循环回到开头以获取新的输入,你可以在最后抛出你自己的错误。