2014-04-03 59 views
0

我想將字符串數組轉換爲整數,但整數parseInt()異常 - 發生未知源。我正在使用string.split()和掃描儀。我使用將字符串數組轉換爲整數

Java代碼:

...{ 
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(" ;");正如你所說,你正在使用拆分,而不是掃描儀;你實際上做了什麼是你使用掃描儀,將掃描器實例轉換爲一個字符串(而不是值),並試圖解析它。

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