我正在编写一个代码,用于获取一些非常大的数字(10 ^ 8顺序),而我的程序正在抛出数字格式异常。这是代码:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
class sticker
{
public static void main(String gs[])
{
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
long a[]=new long[40];
int n=0,i,k=0;
String x;
try {
x=in.readLine();
n=Integer.parseInt(x); // n is the number of inputs
for(i=0;i<n;i++)
{
x=in.readLine();
a[i]=Long.parseLong(x);
}
for(i=0;i<n;i++)
{
if(a[i]<=300000000)
k++;
}
} catch (IOException e) {
System.out.println("error");
} catch(NumberFormatException nfe) {
System.out.println("NumberFormatException: "+nfe.getMessage());
}
System.out.println("\n");
System.out.println(k);
}
}
谁能告诉我我在哪里犯了错误?
错误:
2
18 200000000
NumberFormatException: For input string: "18 200000000"
0
答案 0 :(得分:4)
“18 200000000”因空间而显然不是有效数字。您的程序每行需要一个数字。如果要允许每行多个数字,则需要找到其他解析它们的解决方案。我能想到至少两个解决方案:
split()
在空格上拆分String
。Scanner
代替BufferedReader
。答案 1 :(得分:1)
String[] lineParts = null;
String n = "18 200000000";
lineParts = n.split( " " );
long first = Long.parseLong(lineParts[0]);
long second = Long.parseLong(lineParts[1]);