Java 将字符串数组转换为整数

Java 将字符串数组转换为整数,java,numberformatexception,Java,Numberformatexception,我想将字符串数组转换为整数,但整数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("

我想将字符串数组转换为整数,但整数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)

而不是
String[]parts=line.split(“;”)
do
String[]parts=in.split(“;”)
正如您所说,您使用的是split而不是扫描仪;您实际做的是使用扫描仪,将扫描仪实例转换为字符串(而不是值),并尝试解析该字符串。

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

如果您想使用扫描仪,可以将除沫器设置为:

s.useDeliminator(" ;");
然后,您可以在扫描器仍有输入的情况下继续循环这些值

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

不过,您可以完全抵制
扫描仪
,只需执行以下操作:

String in = "03-02-2014 ;03-02-2014 ;LOW VALUE ;-150.65 ;11.5 ;3301.52 ;3301.52" ;
String[] parts = in.split(" ;");
不过,在解析时要小心。尤其是当输入要改变时。如果您需要解析唯一的输入,那么它的设置方式可能会导致问题