Java 将字符串数组转换为整数
我想将字符串数组转换为整数,但整数parseInt()异常-出现未知源。我正在使用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("
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(“;”)
doString[]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(" ;");
不过,在解析时要小心。尤其是当输入要改变时。如果您需要解析唯一的输入,那么它的设置方式可能会导致问题