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

时间:2014-06-05 05:43:17

标签: java

我正在编写此方法来检查不同类型的不良用户输入。我一直在写一个BigInt课程,我需要确保没有类似" ++ 2"," - 2",字母,数字按空格分隔,例如&#34 ; 222 333"或句号。我之前从未使用过字符串拆分器,而且我没有得到预期的tokenCount。例如,如果我输入" ++ 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;
            }
        } 

    }
}

2 个答案:

答案 0 :(得分:2)

您的计数为1,因为您错误地转义了特殊字符+(在正则表达式中它具有特殊含义)。它应该使用\\转义:

String[] delims = {"\\+", "-", "a", " ", "."};

注意方法split(String)需要 regex 作为参数。

答案 1 :(得分:0)

尝试正则表达式

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