2013-05-01 3 views
3

아래 코드는 제출 된 html 양식에서 데이터를 읽는 서블릿의 코드입니다. 변수 fieldValue은 문자열이며 올바른 값 (예 : BizStr: 5)을 인쇄하지만이 값을 정수로 구문 분석하려고하면 아무 것도 인쇄되지 않습니다.Integer.parseInt가 문자열을 int로 구문 분석하지 않습니다.

for(FileItem uploadItem : uploadItems){ 
    if(uploadItem.isFormField()){ 
    String fieldName = uploadItem.getFieldName(); 
    String fieldValue = uploadItem.getString(); 
    if(fieldName.equals("business_id")){ 
     out.println("BizStr: "+ fieldValue +"\n"); 
     out.println("BizInt: "+ Integer.parseInt(fieldValue)+"\n"); 
    } 
    } 
} 

왜이 문자열은 정수로 파싱되지 않습니까?

+0

가 오류에서 스택 추적을 가지고 있습니까? – Kyle

+5

거기에 여분의 공간이 있는지 의심 스럽습니다. 'Integer.parseInt'는 어딘가에서 먹는'NumberFormatException'을 던집니다. – iluxa

+1

'out.println ("BizInt :"+ Arrays.toString (fieldValue.toCharArray)()) + "\ n");'그리고 대답을 편집하십시오 – durron597

답변

9

테스트 :

Integer.parseInt(" 5"); // space before; yields NumberFormatException 

Integer.parseInt("5 "); // space after; yields NumberFormatException 

분석하기 전에 fieldValuetrim()을 시도해보십시오

out.println("BizInt: "+ Integer.parseInt(fieldValue.trim())+"\n"); 
+0

그는 예외는 없다고 말했지만 트리밍은 모두 좋은 제안입니다. –

+3

덧글에서 계속 대화에 추가 할 또 다른 메모는 숫자가 사용되는 방식에 따라이 대답이 내 'replaceAll'메모보다 더 나은 대답 일 것입니다. 이것은 후행하고 선행 공백을 줄여 주므로,'5'는 받아 들일 수 있지만,'5 5'는 여전히 당신에게 문제를 경고하는 예외를 던져 버릴 것입니다. 만약 당신이 신경 쓰지 않고 공간이 중간에 있더라도 모든 수를 분석하고 싶다면'replaceAll'이 더 좋습니다. – Kyle

관련 문제