分享
三行代码  ›  专栏  ›  技术社区  ›  Sasi Rekha Murakonda

当使用BufferedReader读取同一行中的2个数字时,我遇到了一个错误:java.lang.NumberFormatException:对于输入字符串:“2 3”

  •  0
  • Sasi Rekha Murakonda  · 技术社区  · 1 周前

    我不熟悉BufferedReader。我试着在同一行输入两个数字 例如:23

    import java.io.*;
    public class Main
    {
        public static void main(String[] args)throws IOException{
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
            int N = Integer.parseInt(bufferedReader.readLine().trim());
    
            int M = Integer.parseInt(bufferedReader.readLine().trim());
            System.out.println("N="+N+"M="+M);
        }
    }
    

    所以我遇到了下面的错误。

    Exception in thread "main" java.lang.NumberFormatException: For input string: "2 3"                                                 
            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 Main.main(Main.java:15)                                                                                                  
    
    

    密码怎么了。提前谢谢。

    1 回复  |  直到 1 周前
        1
  •  1
  •   Rhys Wootton    1 周前

    当在同一行接受多个输入时,应该定义一个用于分隔输入的字符。在您的示例中,这似乎是通过空白来完成的。

    您需要使用 split() ,然后将它们分配给需要使用的变量 Integer.parseInt() .

    import java.io.*;
    public class Main
    {
        public static void main(String[] args) throws IOException {
            // Create BufferedReader and two ints
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
            int N, M;
    
            // Take in inputs from user, and split them into an array using whitespace
            // '\\s+' matches at any whitespace size
            String[] inputs = bufferedReader.readLine().split("\\s+");
    
            N = Integer.parseInt(inputs[0]);
            M = Integer.parseInt(inputs[1]);
    
            System.out.println("N=" + N + " M=" + M);
        }
    }