简体   繁体   English

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

[英]Long.parseLong error when parsing a string from a SAXparser class (Java)

I have a problem but I don't know how to solve it: I need to get a Long number from a String (I get this string in a SAXparser class I wrote to get some fields from an XML file).我有一个问题,但我不知道如何解决它:我需要从一个字符串中获取一个 Long 数字(我在我编写的 SAXparser 类中获取这个字符串以从 XML 文件中获取一些字段)。

Here you are the problematic code:这是有问题的代码:

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);
}

( product is an instance from an object where I store all the product information. I got the error in the last line) 产品是我存储所有产品信息的对象的实例。我在最后一行收到错误)

I debugged it and I got this:我调试了它,我得到了这个:

Exception occurred in target VM: For input string: "1.04" java.lang.NumberFormatException: For input string: "1.04" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48) at 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) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:464) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:808) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737) at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119) at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205) at parsers.LectorXML.leer(LectorXML.java:71) at parse目标 VM 中发生异常:对于输入字符串:“1.04” java.lang.NumberFormatException:对于输入字符串:“1.04” at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48) at 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) at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205) at parsers.LectorXML.leer(LectorXML.java:71) at parse rs.LeerXML.main(LeerXML.java:20) < rs.LeerXML.main(LeerXML.java:20) <

1.04 is not a valid long. 1.04 不是一个有效的长。 It is in double format.它是双格式的。

You need to use Double.parseDouble(String);你需要使用Double.parseDouble(String); instead.反而。

Example:例子:

Double.parseDouble(precio1);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM