我在数组中保存了以下数字(从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)
是否需要任何特殊功能,为什么我不能保存
答案 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));