2014-09-24 3 views
0

Java에서 텍스트 값을 정수로 파싱하려면 어떻게합니까?자바가 텍스트를 정수로 파싱

나는 2 가지를 시도했다.

Integer.valueOf("22,959"); 
Integer.parseInt("22,959"); 

그러나 NumberFormatException이 두 개 모두 표시됩니다.

그냥 추가하면 텍스트가 동적이지만 예를 들어 쉼표 형식으로 표시됩니다.

+0

하나 개의 옵션 쉼표 문자열을 제거하는 것입니다. –

답변

1

두 옵션이 모두 올바른 것입니다. valueOfnew Integer() 객체를 반환하고 parseInt은 프리미티브 int을 반환합니다.

그러나 문제는 쉼표로 표시되며 메서드 자체에서는 문제가 아닙니다. 그럼 그냥 할

String value = "22,959"; 
value.replace(",", ""); 
Integer.valueOf(value); 
Integer.parseInt(value); 
0

이 정수에 언급 된 정수는 정수만 허용합니다. 소숫점 이하의 소수점 이하자를 의미합니다. 당신은 부동 소수점 숫자가 아닌 정수를 구문 분석하려는

Integer.parseInt("22,959".replaceAll(",","")); 
0

: 소수 구분을 제거하기 위해 당신은 당신의 문자열 replace 또는 replaceAll 방법을 사용할 수 있습니다. 정수에는 소수점 구분 기호가 없어야합니다. Integer.parseInt ("22")와 유사해야합니다. 사례가 다음과 같아야합니다. float f = Float.parseFloat ("22,959");

+1

아마도 천 단위 구분 기호로 쉼표가 붙은 정수일 것입니다. – NilsH

0

는 먼저 쉼표를 제거해야합니다

Integer.valueOf("22,959".replaceAll(",", ""));

2

사용 NumberFormat 클래스

NumberFormat format = NumberFormat.getInstance(); 
    format.parse(num).intValue(); 

이 기본 인스턴스를 기본 로케일에 따라 될 것입니다. 이 구분에 데이터가있는 경우가

NumberFormat format = NumberFormat.getInstance(Locale.UK); 
0

하여 로케일에 따라 인스턴스를 얻을 수 있습니다, 당신은 로케일 NumberFormat을 사용할 수

NumberFormat.getNumberInstance(Locale.US).parse("22,959")

0

정수는 소수점 이하 자릿수를 가질 수 없습니다. 대신 Double을 사용하십시오. 게다가, 당신은을 사용해야합니다. 쉼표 대신 사용할 수 있습니다. 다음 작품 :

Double.valueOf("22.959"); 
Double.parseDouble("22.959"); 
0

난 당신이

Integer.parseInt("22,959".replaceAll(",", "")); 

와 쉼표를 제거하는 것이 좋습니다 이것은 당신은 확실히 지금까지 유럽 로케일과 거래를해야하지 않을 것으로 가정은, 포르투갈어처럼 그들은을 위해 소수를 사용하는 경우 분수에 대한 숫자 분리 및 쉼표.

당신이 다른 로케일에 대처하려는 경우, 당신은 NumberFormat를 사용하여 문자열을 구문 분석해야합니다 :

myString = NumberFormat.getInstance().format(myNumber); 
: 팩토리 클래스의 방법 중 하나를 사용

현재 로케일의 수치를 포맷하는 경우를

다른 로케일의 번호를 포맷하려면 getInstance를 호출하여 번호를 지정하십시오.

NumberFormat nf = NumberFormat.getInstance(Locale.FRENCH); 

은 그럼 그냥 :

내가 @primitivwurzel에 동의
myNumber = nf.parse(myString); 
0

, 정수는 소수점을 가질 수 없습니다. 사용해 Double.parseDouble()/Double.valueOf() 대신에있는 Integer.parseInt()/Integer.valueOf()

플러스, 점으로 구분 된 소수점 (.)를 사용하지 쉼표 (,)