2014-06-05 7 views
0

여러 가지 종류의 불량 사용자 입력을 검사하기 위해이 방법을 쓰고 있습니다. 저는 BigInt 클래스를 작성했으며 "++ 2", "--2", 글자, "222 333"과 같은 공백으로 나뉘는 숫자 또는 마침표와 같은 것이 없는지 확인해야합니다. 이전에는 String Splitter를 사용하지 않았고 예상되는 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; 
      } 
     } 

    } 
} 

답변

0

잘못 (정규식은 특별한 의미를 가지고에) 특수 문자 + 탈출하고 있기 때문에 당신은 1의 수를 얻고있다

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

시도 정규식. 그것은 \\로 이스케이프해야합니다

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

공지 사항 그 인수로 정규식을 기대 split(String) 방법.

관련 문제