Исключение формата номера Java - PullRequest
0 голосов
/ 05 января 2019

Я решал вопрос на платформе CodeChef, когда столкнулся с NumberFormatException.

Сначала я использовал Scanner для обработки входов, затем BufferedReader. Но никто из них не работал!

Вот мой код:

import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;

class Practise {

    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int t = Integer.parseInt(br.readLine());

        while(t > 0) {
            String s = br.readLine();
            ArrayList<String> al = new ArrayList<>();
            int i = 0;

            while(i < s.length()) {
                String temp = "";
                while(s.charAt(i) != ' '){
                    temp += s.charAt(i);
                    i++;
                    if(i >= s.length()) {
                        break;
                    }
                }
                al.add(temp);
                i++;
            }

            if(al.contains("not")) {
                System.out.println("Real Fancy");
            } else {
                System.out.println("regularly Fancy");
            }

            t--;
        } 
    }
}

В чем может быть проблема?

Input -> Первая строка ввода содержит одно целое число T, обозначающее число тестовых случаев. Описание Т-тестов приведено ниже. -> Первая и единственная строка каждого теста содержит одну строку S, обозначающую цитата.

Сообщение об исключении, которое я получаю -

Exception in thread "main" java.lang.NumberFormatException: null
at java.lang.Integer.parseInt(Integer.java:542)
at java.lang.Integer.parseInt(Integer.java:615)
at Practise.main(Main.java:11)

1 Ответ

0 голосов
/ 05 января 2019

Документация:

* 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.

Исключение будет выдано в строке int t = Integer.parseInt(br.readLine());. Причина, по которой будет сгенерировано исключение, заключается в том, что прочитанный вами ввод не является числом. Если это число + строка или что-то еще, он выбросит NumberFormatException.

Пример ввода 1235a

Это вызовет исключение со следующим сообщением:

java.lang.NumberFormatException: для входной строки: "1235a"

Так что вы должны отладить, какие есть входные данные.

...