在 java 中无法将输入字符串解析为整数

input string cannot be parsed to integer in java

我在数组中保存了以下数字(从 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)

需要什么特殊功能吗,为什么我保存不了

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

根据 Integer#parseInt() 的 Java文档:

An exception of type NumberFormatException is thrown if any of the following situations occurs: [...] The value represented by the string is not a value of type 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));