2013-02-12 4 views
0

내 Java 프로그램에서 직렬 포트로 내 Arduino에서 문자열을받습니다.
문자열은 변수 (문자열) : 결과에 저장됩니다.문자열 문제에 정수

데이터가 될 수 있는지의 예 : 'W : 125'(항상 1 개 문자, 콜론, 내 아두 이노에서 아날로그 값을 가진 공간) 내 코드에서

내가 할 :

int spacePos = result.indexOf(" "); // search where the space is 
number= result.substring(spacePos+1); // take everything what comes behind the space 
System.out.println(number); // print the value, example : 125 
int number2 = Integer.parseInt(number);// this should convert the String 125 to a integer with value 125 
System.out.println(number2);// should print a integer with value 125 

부분 문자열이있는 부분; 나는 생각한다. 숫자를 인쇄하면 NetBeans의 출력 화면에 125가 표시되지만 몇 칸을 선택할 수 있습니까 ??? 내 번호 뒤에.
그러나 number2를 인쇄 할 때 아무 것도 보이지 않습니다.

제공되는 도움을 주시면 감사하겠습니다. 감사.

+0

예외가 발생합니까 ?? – PermGenError

+3

시도 number.trim() – BobTheBuilder

+0

'number'의 길이는 무엇입니까? - 파서를 내 보낸''125''뒤에 예상치 못한 문자가있을 수 있습니까? 구문 분석하기 전에 문자열을 다듬을 수 있습니까? – Floris

답변

0

number= result.substring(spacePos+1);에는 숫자 뒤에 공백이 있습니다. 정수를 구문 분석하여 변환 오류로 이어지는 공백을 제거해야합니다. 당신이 번호 앞에 공간을 선택할 수 있습니다 예를 들어

int spacePos = result.indexOf(" "); 
String number = result.substring(spacePos+1); 
number = number.trim();//removes trailing whitespace 
int number2 = Integer.parseInt(number); 
System.out.println(number2); 
0

를 사용하여, 당신은 :와 숫자 사이에 하나 개 이상의 공간이있다.

int spacePos = result.lastIndexOf(" "); 

을 또는이 작업을 수행 :이 작업을 수행 할

int number2 = Integer.parseInt(number.trim()); 
+0

dammit, trim()이 (가) 트릭을했습니다. 고맙습니다 – user1868409

0

System.out.println(number2)이 도달 할 수없는 것입니다 NumberFormatException 라인의 원인이됩니다 parseInt에 전달되는 문자열에 여분의 공백이있는 것으로 보인다 .

try { 
    /* ... */ 
} catch (Exception e) { 
    /* do nothing */ 
} 

과 같은 코드가 있으면 런타임 오류가 표시되지 않습니다.