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());