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