2013-10-10 2 views
1

이 코드는 :java.lang.NumberFormatException의 : 입력 문자열의 경우 : "10.0"() 메소드 findActions에서 입력 데이터의 유효성을 검사해야합니다

try { 
    System.out.println(findActions(lookingArea.substring(0, right)));// always printing valid number string 
    Integer.parseInt(findActions(lookingArea.substring(0, right)));// checking for number format 
} 
catch(NumberFormatException exc) { 
    System.out.println(exc); 
} 

그러나 나는 항상 이상한입니다 java.lang.NumberFormatException: For input string: "*number*" 을 함께 점검 때문에 System.out.println(findActions(lookingArea.substring(0, right)));

은 내가 . 문자를 기대하지 않는다 10.0

+5

10.0 정수가 아니라 Double.parseDouble을 사용하십시오. 유사한 문제로 인해 많은 질문이 있습니다. – kosa

+1

'10.0'은'int'가 아닙니다. –

+0

작업 중. 고맙습니다. – George

답변

4

Integer.parseInt 같은 *number*를 얻을. 당신이 확실 경우는 다음 중 하나를 수행 int로 변환 할 수 있습니다 :

  1. 그것을 구문 분석하기 전에 문자열의 끝 오프 ".0"을 제거하거나
  2. 전화 Double.parseDouble을하고 결과를 캐스팅 int.

위에 링크 된 Javadoc과를 인용 : 문자열의

문자하는 모든 첫 번째 문자가 마이너스 기호의 ASCII 수 제외하고 소수점 자리 여야합니다 '-'('\ u002D」)과 거기 ~ 은 양수 값을 나타내거나 ASCII 플러스 기호 '+'('\ u002B') ~ 은 양수 값을 나타냅니다.

2

10.0은 정수가 아닙니다. 대신 다음을 사용할 수 있습니다.

int num = (int) Double.parseDouble(...); 
관련 문제