2014-10-20 2 views
-1

몇 주 후에 마침내 내 응용 프로그램을 통해 내 숫자를 구문 분석하는 방법을 알게되었습니다. 그러나 이제는 92839283982938 또는 22.483.84.3883 형식의 숫자가 주어지면 앱이 다운됩니다.더 긴 숫자에서 ParseInt가 충돌 함

나는 그 숫자 형식을 허용하는 방법을 모른다. 문제는 바코드 스캐너에 연결되어 있으므로 실제로 그 숫자 형식을 받아 들일 필요가 있습니다.

내가 구문 분석하는 데 사용되는 코드는 다음과 같습니다

JSONObject c = user.getJSONObject(Integer.parseInt(xyz)-1); 

답변

1

이상 번호는 당신이 Long.parseLong() 대신 Integer.parseInt() 사용해야합니다.

다음 사례 22.483.84.3883 숫자가 아닙니다. 여기서 NumberFormatException을 얻을 수 있습니다. 유효한 사례로 22.483.84.3883 또는 22-483-84-3883을 고려할 경우

당신은

try{ 
    long val=Long.parseLong("xxxx") 
}catch(NumberFormatException e){ 
    // exception 
} 

을 사용할 수 있습니다, 당신은 . 또는 - 먼저 교체해야합니다.

예 :

long val=Long.parseLong("22.483.84.3883".replaceAll("\\.", "")); 
System.out.println(val); 
+0

내가 22.483.84.3883을 수락 할 수있는 방법을 알고 있습니까? 또는 대시가 포함 된 하나입니까? – derhak

+0

죄송하지만 이해가 안됩니다. 유효하게 바꾸려면 어떻게해야합니까? – derhak

+0

@derhak 내 편집을 확인하십시오. –

0

사용 Long.parseLong 대신. 정수 유형에는 큰 수를 포함 할 수 없습니다 (정수의 최대 값은 2^31-1이며 92839283982938보다 훨씬 작음). 또한 점들을 제거해야합니다.

시도 :

JSONObject c = user.getJSONObject(Long.parseLong(xyz.replace(".",""))-1); 
+0

그것은 또한 같은 여러 중단 점과 번호를 받아 들일 것입니다.? 또는 대시? – derhak

+0

@derhak 숫자를 구문 분석하기 전에 중단 점을 제거해야합니다. – Eran