2016-11-21 1 views
0

숫자를 사용자의 문자열로 입력하고 Double 개체로 구문 분석해야합니다.문자열을 구문 분석하는 방법 쉼표와 점을 모두 쉼표로 사용하여 두 번으로 변환하는 방법

소수점 구분 기호로 쉼표를 사용하고 도트로 사용할 수 있기를 바랍니다. 그리고 점으로 만 출력하십시오.

예 : 22,33 -> 22.33 및 22.33 -> 내가 사용하는 것은 22.33

:

NumberFormat format = NumberFormat.getInstance(Locale.FRANCE); 
     try { 
      Number number = format.parse(formDto.getWeight()); 
      kitten.setWeight(number.doubleValue()); 
     } catch (ParseException e) { 
      e.printStackTrace(); 
     } 

그러나 그것은 단지 ','구분 기호 값을 가져옵니다. 사용자가 점으로 입력하면 모든 소수점을 잃어 버리고 22.33 -> 22.0 또는 4.1 -> 4.0 을 반환합니다. 내가 파싱 문제 (분명한 사항)를 보았지만이를 해결하기 위해 좋은 연습이 무엇인지 전혀 알지 못합니다.

+0

지정하십시오. 프로그래밍 언어 - Java입니까? – lospejos

+0

질문이 업데이트되었습니다. 예, Java입니다 –

답변

3

처럼 Mohit 타쿠는 말했지만, 컴파일 가능한

NumberFormat format = NumberFormat.getInstance(Locale.FRANCE); 
try { 
    Number number = format.parse(formDto.getWeight().replace('.', ',')); 
    kitten.setWeight(number.doubleValue()); 
} catch (ParseException e) { 
    e.printStackTrace(); 
} 
+0

고맙습니다 Estanislao, 귀하의 수정을 위해. –

3

점 "."을 바꿀 수 있습니다. 쉼표 :., "구문 분석하기 전에 한 번

NumberFormat format = NumberFormat.getInstance(Locale.FRANCE); 
    try { 
     Number number = format.parse(formDto.replace('.', ',').getWeight()); 
     kitten.setWeight(number.doubleValue()); 
    } catch (ParseException e) { 
     e.printStackTrace(); 
    } 
0

이 함께보십시오.

NumberFormat format = NumberFormat.getInstance(Locale.FRANCE); 
     try { 
      Number number = Double.parseDouble(format.replace(",", ".").getWeight()); 
      kitten.setWeight(number.doubleValue()); 
     } catch (ParseException e) { 
      e.printStackTrace(); 
     } 

감사

0

합니다. String을 Double 값으로 변환하고 싶다면 아래 접근 방식을 사용하면됩니다.

String numberStr1 = "22,33"; //number with comma as decimal separator 
String numberStr2 = "22.33"; //number with dot as decimal separator 

System.out.println(numberStr1.contains(",") ? Double.valueOf(numberStr1.replace(',', '.')):Double.valueOf(numberStr1)); 
System.out.println(numberStr2.contains(",") ? Double.valueOf(numberStr2.replace(',', '.')):Double.valueOf(numberStr2)); 

저는이 작업을 수행하기 위해 Java 3 차 연산자를 사용했습니다. 화면에 인쇄하는 대신 double 값을 저장할 수 있습니다.

이 방법이 도움이되지 않거나 NumberFormat을 사용하여 구체적으로 처리하려면 의견에 대해 알려주십시오.

관련 문제