Java 方法检查用户输入的格式是否正确

Java 方法检查用户输入的格式是否正确,java,Java,我写这个方法是为了检查不同类型的错误用户输入。我一直在写一个BigInt类,我需要确保没有像“++2”、“--2”、字母、数字被空格分割,比如“222333”或句点。我以前从未使用过字符串拆分器,也没有得到预期的令牌数。例如,如果我在控制台中输入“++2”,tokenCount=1,但我原以为会得到3 有没有办法解决这个问题 public static boolean checkValidInput(String val) { String input = val; String

我写这个方法是为了检查不同类型的错误用户输入。我一直在写一个BigInt类,我需要确保没有像“++2”、“--2”、字母、数字被空格分割,比如“222333”或句点。我以前从未使用过字符串拆分器,也没有得到预期的令牌数。例如,如果我在控制台中输入“++2”,tokenCount=1,但我原以为会得到3

有没有办法解决这个问题

public static boolean checkValidInput(String val) {
    String input = val;
    String[] delims = {"//+", "-", "a", " ", "."};
    String[] tokens;
    int tokenCount;
    boolean validInput = true;
    for(int i = 0; i < delims.length; i++) {
        tokens = input.split(delims[i]);
        tokenCount = tokens.length;
        if(delims[i].equals("//+")){
            if(tokenCount > 2){
                validInput = true;
            } else {
                validInput = false;
            }
        } else if(delims[i].equals("-")){
            if(tokenCount > 2){
                validInput = true;
            } else {
                validInput = false;
            }
        } else if(delims[i].equals("a")){
            if(tokenCount > 1){
                validInput = true;
            } else {
                validInput = false;
            }
        } else if(delims[i].equals(" ")){
            if(tokenCount > 1){
                validInput = true;
            } else {
                validInput = false;
            }
        } else if(delims[i].equals(".")){
            if(tokenCount > 1){
                validInput = true;
            } else {
                validInput = false;
            }
        } 

    }
}
public静态布尔校验有效输入(String val){
字符串输入=val;
字符串[]delims={”//+“,”-“,”a“,”,“,”};
字符串[]标记;
整数计数;
布尔值validInput=true;
对于(int i=0;i2){
validInput=true;
}否则{
validInput=假;
}
}else if(delims[i].等于(“-”){
如果(令牌计数>2){
validInput=true;
}否则{
validInput=假;
}
}else如果(delims[i].等于(“a”)){
如果(令牌计数>1){
validInput=true;
}否则{
validInput=假;
}
}else if(delims[i].等于(“”){
如果(令牌计数>1){
validInput=true;
}否则{
validInput=假;
}
}else if(delims[i].等于(“.”){
如果(令牌计数>1){
validInput=true;
}否则{
validInput=假;
}
} 
}
}
试试正则表达式

input.matches("[+-]?\\d+");

您得到的计数是
1
,因为您错误地转义了特殊字符
+
(在正则表达式中,它有一个特殊的含义)。应使用
\\
对其进行转义:

String[] delims = {"\\+", "-", "a", " ", "."};
注意方法
split(String)
需要一个正则表达式作为参数