NumberFormatException 无法从文本文件解析字符串`
NumberFormatException Unabe to parse String from text file`
我在将字符串解析为原语时遇到问题。
File file1 = new File("bankData.txt");
Scanner sc = new Scanner(file1);
while (sc.hasNext())
{
char c = sc.next().charAt(0);
if(c == 's')
{
long l = Long.parseLong(sc.next().trim());
String s1 = sc.next().trim();
String s2 = sc.next().trim();
// Line 248 int in = Integer.parseInt(sc.next().trim());
String s3 = sc.next().trim();
double d1 = Double.parseDouble(sc.next().trim());
double d2 = Double.parseDouble(sc.next().trim());
System.out.println(s1);
System.out.println(l);
System.out.println(s1);
System.out.println(s2);
System.out.println(s3);
System.out.println(in);
System.out.println(d1);
System.out.println(d2);
}
}
下面的代码正在生成
bankData.txtjava.lang.NumberFormatException: For input string: "6131231234"
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at bank.Bank.readFile(Bank.java:248)
这是我的程序试图读取的 bankData.txt 文件。
s 1001 John Doe 6131231234 john@john.com 1000.00 0.01 200.00
起初我以为是空格导致了问题,但如您所见,我已经修剪了扫描仪返回的所有字符串,试图消除它,但没有成功。看来原始变量 long l = Long.parseLong(sc.next().trim());
String s1 = sc.next().trim();
String s2 = sc.next().trim();
已成功分配;我尝试在 eclipse 调试器中确认这一点,但它只是跳过了断点(任何见解?)。 Java SE8 NumberFormatExceptionStates
Thrown to indicate that the application has attempted to convert a string to one of the numeric types, but that the string does not have the appropriate format.
不知道从这里到哪里去。
提前致谢,感谢您的努力。
您正在尝试转换大于 Java 中整数最大大小的数字。
最大整数值可以是2,147,483,647。您尝试转换为整数的字符串将包含值 6,131,231,234
像这样把它存储成一个长值
long x = Long.parseLong(sc.next().trim());
我认为数字字符串超出了整数范围,你应该在那里使用 Long.parseLong() 它应该可以工作。
好吧,事实就是这样:Integer.parseInt() 接受一个字符串参数,如果该参数包含空格,该方法将抛出异常。但是如果param的值大于Integer.MAX_VALUE,也会抛出异常。
Integer.MAX_VALUE 是 2147483647,小于你的“6131231234”,所以你应该使用 Long.parseLong()
String str = sc.next().trim();
每次你想使用 str 之前;只需使用
System.out.printf("%s%n",str);
测试它到底是什么 is.and 你可以找到错误的地方
int 数据类型是一个 32 位有符号二进制补码整数。它的最小值为 -2,147,483,648,最大值为 2,147,483,647。
你的值6131231234大于int最大值,6131231234不在int范围内,导致异常
请使用 long 而不是 int。
我在将字符串解析为原语时遇到问题。
File file1 = new File("bankData.txt");
Scanner sc = new Scanner(file1);
while (sc.hasNext())
{
char c = sc.next().charAt(0);
if(c == 's')
{
long l = Long.parseLong(sc.next().trim());
String s1 = sc.next().trim();
String s2 = sc.next().trim();
// Line 248 int in = Integer.parseInt(sc.next().trim());
String s3 = sc.next().trim();
double d1 = Double.parseDouble(sc.next().trim());
double d2 = Double.parseDouble(sc.next().trim());
System.out.println(s1);
System.out.println(l);
System.out.println(s1);
System.out.println(s2);
System.out.println(s3);
System.out.println(in);
System.out.println(d1);
System.out.println(d2);
}
}
下面的代码正在生成
bankData.txtjava.lang.NumberFormatException: For input string: "6131231234"
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at bank.Bank.readFile(Bank.java:248)
这是我的程序试图读取的 bankData.txt 文件。
s 1001 John Doe 6131231234 john@john.com 1000.00 0.01 200.00
起初我以为是空格导致了问题,但如您所见,我已经修剪了扫描仪返回的所有字符串,试图消除它,但没有成功。看来原始变量 long l = Long.parseLong(sc.next().trim());
String s1 = sc.next().trim();
String s2 = sc.next().trim();
已成功分配;我尝试在 eclipse 调试器中确认这一点,但它只是跳过了断点(任何见解?)。 Java SE8 NumberFormatExceptionStates
Thrown to indicate that the application has attempted to convert a string to one of the numeric types, but that the string does not have the appropriate format.
不知道从这里到哪里去。
提前致谢,感谢您的努力。
您正在尝试转换大于 Java 中整数最大大小的数字。
最大整数值可以是2,147,483,647。您尝试转换为整数的字符串将包含值 6,131,231,234
像这样把它存储成一个长值
long x = Long.parseLong(sc.next().trim());
我认为数字字符串超出了整数范围,你应该在那里使用 Long.parseLong() 它应该可以工作。
好吧,事实就是这样:Integer.parseInt() 接受一个字符串参数,如果该参数包含空格,该方法将抛出异常。但是如果param的值大于Integer.MAX_VALUE,也会抛出异常。
Integer.MAX_VALUE 是 2147483647,小于你的“6131231234”,所以你应该使用 Long.parseLong()
String str = sc.next().trim();
每次你想使用 str 之前;只需使用
System.out.printf("%s%n",str);
测试它到底是什么 is.and 你可以找到错误的地方
int 数据类型是一个 32 位有符号二进制补码整数。它的最小值为 -2,147,483,648,最大值为 2,147,483,647。
你的值6131231234大于int最大值,6131231234不在int范围内,导致异常
请使用 long 而不是 int。