从SAXparser类(Java)解析字符串时出现Long.parseLong错误

时间:2012-11-13 21:42:15

标签: java parsing runtime-error saxparser

我有问题,但我不知道如何解决它: 我需要从String中获取一个Long数字(我在一个SAXparser类中得到这个字符串,我写的是从XML文件中获取一些字段)。

这里有问题的代码:

if (bprice) {
String price = new String(ch, start, length);
System.out.println("Product price: " + price);
bprice = false;
if (price.equalsIgnoreCase("0"))
product.price = null;
else product.price = Long.parseLong(price);
}

产品是来自我存储所有产品信息的对象的实例。我在最后一行收到了错误)

我调试了它,我得到了这个:

  
    

目标VM发生异常:对于输入字符串:“1.04”java.lang.NumberFormatException:对于输入字符串:“1.04”at     java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)       在java.lang.Long.parseLong(Long.java:419)at     java.lang.Long.parseLong(Long.java:468)at     parsers.LectorXML.characters(LectorXML.java:325)at     com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.characters(AbstractSAXParser.java:538)       在     com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:464)       在     com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:808)       在     com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)       在     com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119)       在     com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)       at parsers.LectorXML.leer(LectorXML.java:71)at     parsers.LeerXML.main(LeerXML.java:20)<

  

1 个答案:

答案 0 :(得分:2)

1.04不是有效的长。它采用双重格式。

您需要改为使用Double.parseDouble(String);

示例:

Double.parseDouble(precio1);