我想将字符串数组转换为整数但是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)
答案 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(" ;");
但是,在解析时要小心。特别是如果输入会改变。如果您需要解析唯一输入,那么设置它的方式可能会导致问题。