将String数组转换为Integer

时间:2014-04-03 18:25:51

标签: java numberformatexception

我想将字符串数组转换为整数但是Integers parseInt()异常 - 发生未知来源。我正在使用string.split()和扫描仪。

java Code I使用:

...{
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:

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)

2 个答案:

答案 0 :(得分:0)

而不是String[] parts = line.split(" ;");String[] parts = in.split(" ;");正如您所说,您使用的是分割而非扫描;你实际做的是你使用扫描仪,将扫描仪实例转换为字符串(而不是值),并试图解析它。

答案 1 :(得分:0)

首先,问题是您在扫描仪的split()结果上调用toString()函数。

如果您想使用扫描仪,可以设置如下的分隔符:

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(" ;");

但是,在解析时要小心。特别是如果输入会改变。如果您需要解析唯一输入,那么设置它的方式可能会导致问题。