Исключение числа Java при вводе строки из buffereader - PullRequest
0 голосов
/ 05 октября 2018
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)

Ответы [ 2 ]

0 голосов
/ 05 октября 2018

Я думаю, что вы ввели номер 4 с пробелом.Пожалуйста, проверьте ваш ввод.

Для входной строки: "4"

Чтобы избежать этого, вы можете добавить функцию обрезки, как показано ниже

Integer.parseInt(br.readLine().trim());
0 голосов
/ 05 октября 2018
java.lang.NumberFormatException: For input string: "4 "

Как видно из сообщения об ошибке над строкой, которую вы пытаетесь проанализировать, так как число имеет конец в конце, что приведет к сбою синтаксического анализа.

Чтобы избавиться от ведущегои конечные пробелы вы можете использовать метод trim () для Strings:

a=Integer.parseInt(br.readLine().trim());
...