2014-09-23 5 views
0

오류가있는 데이터 (예 : 5 + -0.02)를 계산할 수있는 그래프 계산기를 만들고 있습니다. 그 속성에 BigDecimal 변수가있는 Numbers3이라는 객체를 만들었습니다. 콘솔을 통해 데이터를 입력하면 모든 것이 정상적으로 작동합니다. 문제는 내가 JTable에서 데이터를 수집하려고 할 때 발생합니다. 나는 String로 개체를 변환하지만 BigDecimal(String)에 직면했을 때 그것은 예외가 발생합니다 :JTable에서 BigDecimal까지의 문자열 값은 Java.lang.NumberFormatException을 던졌습니다.

Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException 
    at java.math.BigDecimal.<init>(BigDecimal.java:470) 
    at java.math.BigDecimal.<init>(BigDecimal.java:739) 

이 나는 ​​StringJTable에서 개체를 얻고 방법이다. 내가 .getClass()의 반환을 인쇄 할 때 출력이 java.lang.String 때문) 노력하고 있습니다 :

String number=new String(String.valueOf(table.getValueAt(i,j)); 

나는이 문제에 어떤 도움을 주셔서 감사합니다 정말 것이다 :

String number = (String)(table.getValueAt(i,j)); 

은 또한 다음과 같은 몇 가지 다른 옵션을 시도 해 봤나 .

+3

어떤 문자열을 전달하고 있습니까? System.out.println (""+ String); 실제로 새로운 BigDecimal (String)을 전달하는지 확인하십시오. – brso05

+0

우리는 약간의 코드를 볼 수 있습니까? 콘솔에 인쇄 할 때 문자열 값은 무엇입니까? –

답변

0

봅니다 BigDecimal의 요구 사항에 맞게 문자열을 정상화 : 코드 위

private static BigDecimal parse(String str) { 
    String normalized = str.replaceAll("\\s", "").replace(',', '.'); 
    return new BigDecimal(normalized); 
} 

은 (BigDecimal의 생성자에서 허용되지 않습니다) 입력 문자열에서 모든 공백 문자를 제거합니다.

더 많은 것 - 필요하다면 쉼표를 소수점으로 대체합니다.