好吧,我正在与客户一起编程租车系统,这些系统都有身份证。在租用汽车时,客户需要使用id识别自己,所以我需要一个自定义异常来处理用户的输入是8个数字和一个字母,例如:
55550000A
如果输入是否为int,我已经做了一个例外,它就是:
import java.util.*;
import java.util.Scanner;
public class read {
static Scanner leer=new Scanner(System.in);
public static int readInt() {
int num = 0;
boolean loop = true;
while (loop) {
try {
num = leer.nextInt();
loop = false;
} catch (InputMismatchException e) {
System.out.println("Invalid value!");
System.out.println("Write again");
leer.next();
}
}
return num;
}
}
您唯一需要做的就是声明变量并调用方法如下:
int variable=read.readInt();
所以如果id可以这样工作会很好,我的意思是另一个方法readId()将返回值。问题是,我不知道如何为自定义格式制作例外,或者如果可能的话,那么任何帮助都会有所帮助。非常感谢你!
答案 0 :(得分:1)
你的问题有点混乱,但我想你想创建一个新的例外。
创建一个文件MyAppException.java
class MyAppException extends Exception {
private String message = null;
public MyAppException() {
super();
}
public MyAppException(String message) {
super(message);
this.message = message;
}
}
你可以通过
扔掉它throw new MyAppException();
但我想你想要的东西不需要例外:
public static String readId() {
String id = "";
while(true){
id = leer.next();
try{
Integer.parseInt(id.substring(0,8));
}catch(InputMismatchException e){
System.out.println("Invalid Input");
continue;
}
if(id.length() != 9)continue;
if(Character.isLetter(id.chatAt(8)))break;
}
return id;
}
答案 1 :(得分:0)
@epascarello是正确的,除了他们名字中的Java之外,它们都是非常不同的,至于问题,尝试制作这样的自定义异常:
public class InputMismatchException extends Exception {
public InputMismatchException(String message) {
super(message);
}
}
答案 2 :(得分:0)
通常,您只想抛出异常以防止某种错误导致程序以某种形式完全失败。 更好解决方案是在稍后在程序中使用之前验证输入。创建检查输入是否为所需长度和数据类型的条件,如果不是,则需要再次输入。
过度使用异常指向糟糕的设计,如果稍后修改代码,可能会出现严重问题。
答案 3 :(得分:0)
通过扩展Exception
-
class InvalidIdException extends Exception
{
public InvalidIdException() {}
public InvalidIdException(String message)
{
super(message);
}
}
从您的客户端类检查输入ID是否有效。如果它是无效ID,则throw
InvalidIdException
。假设您正在使用validateId()
方法验证您的ID。然后你可以从这个方法中抛出InvalidIdException
-
boolean isValidId(String id) throws InvalidIdException{
if(id == null){
throw new InvalidIdException("Id is null");
}
else {
//check for id formatting
//for example whether id has it's minimum length
//contains any character etc.
throw new InvalidIdException("Id has wrong format");
}
return true;
}