代码在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
。
答案 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)
使用throws
和try
代替使用catch
。对我来说很好
答案 2 :(得分:0)
您应先解析输入内容,然后再将其解析为Integer或任何其他Object ...
String str = br.readLine();
if(null!=str)
val = Integer.parseInt(str);