2014-04-03 3 views
0

문자열 배열을 정수로 변환하려고하지만 Integers parseInt() 예외 - 알 수없는 소스가 발생합니다. string.split()과 스캐너를 사용하고 있습니다. 내가 사용String 배열을 Integer로 변환

자바 코드 :

...{ 
String in = "03-02-2014 ;03-02-2014 ;LOW VALUE ;-150.65 ;11.5 ;3301.52 ;3301.52" ; 
Scanner s = new Scanner(in); 

String line = s.toString(); 
String[] parts = line.split(" ;"); 

//Getting First Date 
String date1 = parts[0]; 
String[] daysDate = date1.split("-"); 
int dia= new Integer (Integer.parseInt(daysDate[0])); 
int mes= new Integer (Integer.parseInt(daysDate[1])); 
int ano= new Integer (Integer.parseInt(daysDate[2])); 

//Get second date 
String valueDateStri = parts[1]; 
String[] valueDateSplit = valueDateStri.split("-"); 
int vdia=Integer.parseInt(valueDateSplit[0]); 
int vmes=Integer.parseInt(valueDateSplit[1]); 
int vano=Integer.parseInt(valueDateSplit[2]); 

//Get String Description 
String desc = parts[2]; 

//Get Double values 
double drafT = Double.parseDouble(parts[3]);  //Draft 
double crediT = Double.parseDouble(parts[4]);  //credit 
double accBalance = Double.parseDouble(parts[5]); //acountingBalance 
double avbBalance = Double.parseDouble(parts[6]); //avaiableBalance 

예외 :

Exception in thread "main" java.lang.NumberFormatException: For input string: "java.util.Scanner[delimiters=\p{javaWhitespace}+][position=0][match valid=false][need input=false][source closed=false][skipped=false][group separator=\.][decimal separator=\,][positive prefix=][negative prefix=\Q" 

    at java.lang.NumberFormatException.forInputString(Unknown Source) 
    at java.lang.Integer.parseInt(Unknown Source) 
    at java.lang.Integer.parseInt(Unknown Source) 

답변

0

대신 String[] parts = line.split(" ;"); 당신이, 당신이 대신 스캐너의 분할을 사용하는 말했듯이 String[] parts = in.split(" ;");을; 실제로 당신이 스캐너를 사용하고, 스캐너 인스턴스를 값 대신 String으로 변환하고, 구문 분석을 시도했습니다.

0

우선 스캐너의 toString() 결과에서 split() 기능을 호출하는 것이 문제입니다. 당신이 스캐너를 사용하고자하는 경우

, 당신은 그래서 같은 deliminator을 설정할 수 있습니다

s.useDeliminator(" ;"); 

그런 다음, 당신은 그냥 그래도 스캐너가 입력을 가지고있는 동안 값을 통해 반복 유지할 수 있습니다.

while(s.hasNext()){ 
    final String nextValue = s.next(); 
    // Parse nextValue 
} 

당신은 모두 비록 Scanner 보이콧, 그냥 다음을 수행 할 수 : 구문 분석 할 때

String in = "03-02-2014 ;03-02-2014 ;LOW VALUE ;-150.65 ;11.5 ;3301.52 ;3301.52" ; 
String[] parts = in.split(" ;"); 

비록,주의하십시오. 특히 입력이 변경 될 경우. 고유 한 입력을 구문 분석해야하는 경우 설정 방법에 따라 문제가 발생할 수 있습니다.

+0

도움 주셔서 감사합니다. :) 작동 중입니다. – Renatooos

관련 문제