Java 从 buffereader 输入字符串时出现数字异常
Java Number Exception at string input from buffereader
import java.util.*;
import java.io.*;
import java.lang.*;
class Ex
{
public static void main (String[] args) throws IOException
{
BufferedReader br = new BufferedReader(newInputStreamReader(System.in));
int a,b,n,c;
n=Integer.parseInt(br.readLine());
for(int i=1;i<=n;i++)
{
try
{
a=Integer.parseInt(br.readLine());
b=Integer.parseInt(br.readLine());
try
{
c=a/b;
System.out.println(c);
}
catch (ArithmeticException e)
{
System.out.println(e);
}
}
catch (InputMismatchException m)
{
System.out.println(m);
}
}
}
}
上面提到的是我正在尝试的代码 运行
下面是 input_file.txt
4
10
3
10
Hello
10
2
23.323
0.0
这是我得到的错误。
Exception in thread "main" java.lang.NumberFormatException: For input string: "4 "
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:580)
at java.lang.Integer.parseInt(Integer.java:615)
at Ex.main(Ex.java:11)
java.lang.NumberFormatException: For input string: "4 "
正如您从您尝试解析的字符串上方的错误消息中看到的那样,因为数字末尾有一个 space,这将导致解析失败。
要去除前导和尾随 space,您可以对字符串使用 trim() 方法:
a=Integer.parseInt(br.readLine().trim());
我想你用 space 输入了数字 4。请检查您的输入。
对于输入字符串:"4 "
要避免它,您可以添加 trim 函数,如下所示
Integer.parseInt(br.readLine().trim());
import java.util.*;
import java.io.*;
import java.lang.*;
class Ex
{
public static void main (String[] args) throws IOException
{
BufferedReader br = new BufferedReader(newInputStreamReader(System.in));
int a,b,n,c;
n=Integer.parseInt(br.readLine());
for(int i=1;i<=n;i++)
{
try
{
a=Integer.parseInt(br.readLine());
b=Integer.parseInt(br.readLine());
try
{
c=a/b;
System.out.println(c);
}
catch (ArithmeticException e)
{
System.out.println(e);
}
}
catch (InputMismatchException m)
{
System.out.println(m);
}
}
}
}
上面提到的是我正在尝试的代码 运行 下面是 input_file.txt
4
10
3
10
Hello
10
2
23.323
0.0
这是我得到的错误。
Exception in thread "main" java.lang.NumberFormatException: For input string: "4 "
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:580)
at java.lang.Integer.parseInt(Integer.java:615)
at Ex.main(Ex.java:11)
java.lang.NumberFormatException: For input string: "4 "
正如您从您尝试解析的字符串上方的错误消息中看到的那样,因为数字末尾有一个 space,这将导致解析失败。
要去除前导和尾随 space,您可以对字符串使用 trim() 方法:
a=Integer.parseInt(br.readLine().trim());
我想你用 space 输入了数字 4。请检查您的输入。
对于输入字符串:"4 "
要避免它,您可以添加 trim 函数,如下所示
Integer.parseInt(br.readLine().trim());