输入字符串无法在java

时间:2017-11-09 21:24:20

标签: java xml collections numberformatexception

我在数组中保存了以下数字(从XML文件中获取):

100000000000008261
100000000000008266
100000000000008267
100000000000008268

SeqNrList由此填充:

ArrayList SeqNrList = new ArrayList<>();
SeqNrList.add(doc.getElementsByTagName("SequenceNumber").item(0).getTextContent());

我尝试使用以下代码获取最小值和最大值:

int seqsizemin = Integer.parseInt((String) Collections.min(SeqNrList));
int seqsizemax = Integer.parseInt((String) Collections.max(SeqNrList));

另外,我尝试了以下内容:

int seqsizemin = Integer.valueOf((String) Collections.min(SeqNrList));
int seqsizemax = Integer.valueOf((String) Collections.max(SeqNrList));

但是当我运行我的脚本时,我只得到了以下错误:

Exception in thread "main" java.lang.NumberFormatException: For input string: "100000000000008261"
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.lang.Integer.parseInt(Integer.java:583)
    at java.lang.Integer.parseInt(Integer.java:615)
    at ReadXMLFile.main(ReadXMLFile.java:117)

是否需要任何特殊功能,为什么我不能保存

2 个答案:

答案 0 :(得分:0)

您需要记住,整数数据类型可以保存最多需要32位的值,您的示例中的值需要表示超过32位,使用Long.parseLong可以为您提供表示为{{1如果您需要处理更大的值,请查看long

答案 1 :(得分:0)

根据Integer#parseInt()的JavaDoc:

  

如果出现以下任何一种情况,则抛出类型NumberFormatException的异常:[...] 字符串表示的值不是int 类型的值。

任何无法解析为int的号码都无效。

在您的情况下,数字100000000000008261大于Java的32-Bit Integer。这就是您收到错误的原因。

要了解这一点,请查看Long#parseLong()

long seqsizemin = Long.parseLong((String) Collections.min(SeqNrList));
long seqsizemax = Long.parseLong((String) Collections.max(SeqNrList));