Exception “线程中的异常”;主要的;,我认为Integer.ParseInt()被卡住了,但我不知道为什么

Exception “线程中的异常”;主要的;,我认为Integer.ParseInt()被卡住了,但我不知道为什么,exception,main,parseint,Exception,Main,Parseint,我的程序从用户那里得到两个数字,一个长度为10,一个长度为3。我把它们当作一根绳子。然后我尝试使用Integer.parseInt()将它们转换为整数。我没有代码错误,但当我运行程序时,我得到以下错误 线程“main”java.lang.NumberFormatException中的异常:对于输入字符串:“4159238189” 位于java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) 位于ja

我的程序从用户那里得到两个数字,一个长度为10,一个长度为3。我把它们当作一根绳子。然后我尝试使用Integer.parseInt()将它们转换为整数。我没有代码错误,但当我运行程序时,我得到以下错误

线程“main”java.lang.NumberFormatException中的异常:对于输入字符串:“4159238189” 位于java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) 位于java.lang.Integer.parseInt(Integer.java:495) 在java.lang.Integer.parseInt(Integer.java:527)处 位于assn3.secrets.storetoarray(assn3.java:75) 位于assn3.assn3.main(assn3.java:30) Java结果:1


}
Integer
s(和
int
s)最多只能有一个
Integer.MAX\u值,即(2^31)-1--大约20亿。您的输入大于该值,这使得它不是可解析的
int
,因此
parseInt()
抛出异常。使用
Long.parseLong()
,它的
MAX\u值要高得多
,但出于您的目的,您可能根本不需要将变量设置为数字对象。因为您没有对它执行任何数学运算,所以很可能只将它作为
字符串保存


编辑:再看一眼,我发现您正在对电话号码执行一些算术运算,但同样的效果很可能通过
String
操作实现。很难判断您在那里做什么。

整数是一种有符号的32位类型,其范围从–2147483648到2147483647。long是一种有符号的64位类型,适用于int类型不足以容纳所需值的情况,范围从–9223372036854775808到9223372036854775807。这使得它在需要大整数时非常有用

试试这行代码-

long phoneint = Long.parseLong(initialphone);
long phonetemp1 = phoneint;

非常感谢您的反馈。那太疯狂了,我想到过这样的事情!我基本上是拿一个10位数的电话号码,然后我想把它分成每个数字。然后我要处理这些数字。secrets类有一个方法可以从用户那里获取输入,然后再从另一个方法中切碎10位数字。您可以使用
String\subString()
将其切碎。根据您打算如何操作数字,如果需要,您可以将每个子字符串解析为
int
。或者,说到底,
Long
对你来说会更好。
long phoneint = Long.parseLong(initialphone);
long phonetemp1 = phoneint;