代码在Eclipse中运行良好但在CodeChef中抛出NumberFormatException

时间:2016-06-11 06:36:33

标签: java numberformatexception

代码在Eclipse IDE上运行得非常好,但在Codechef上,编译器显示此错误:

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 Codechef.main(Main.java:19)

这是我的代码:

import java.util.*;
import java.lang.*;
import java.io.*;
class Codechef {
    public static void main(String[] args) throws IOException
    {
        int x = 0, j = 0;
        String s;
        int counta = 0, countb = 0;
        int countf[] = new int[5];
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int i = Integer.parseInt(br.readLine());
        while (j < i) {
            s = br.readLine();
            for (int k = 0; k < s.length(); k++) {
                if (s.charAt(k) == 'a') {
                    counta++;
                }
                else {
                    countb++;
                }
            }
            if (counta < countb) {
                countf[j] = counta;
            }
            else {
                countf[j] = countb;
            }
            j++;
            counta = countb = 0;
        }

        for (int g = 0; g < i; g++) {
            System.out.println(countf[g]);
        }
    }
}

我甚至尝试过使用扫描仪类,但它显示的是NoSuchElementException

3 个答案:

答案 0 :(得分:0)

你的问题在这里:

int i = Integer.parseInt(br.readLine());

您正在尝试解析整数输入,但您没有验证输入是否实际上可以归结为整数

您需要验证输入,并且仅在输入正确的时候继续前进:

实施例

int i = -1;
    while (i == -1) {
        try {
        i = Integer.parseInt(br.readLine());
        } catch (NumberFormatException e) {
        System.out.println("Wrong input");
        }
    }

答案 1 :(得分:0)

使用throwstry代替使用catch。对我来说很好

答案 2 :(得分:0)

您应先解析输入内容,然后再将其解析为Integer或任何其他Object ...

String str = br.readLine();
    if(null!=str)
        val = Integer.parseInt(str);