在读取输入文件时解决java异常

时间:2015-04-19 09:32:29

标签: java input

我有一个输入文件,格式如下:

1  // No. of test case
N Q  // N= Number of string and Q= Number of Query
a
bvcc
.
.
upto N string
3763717342424960
212
.
.
. upto Q

我收到以下错误:

"main" java.lang.NumberFormatException: For input string: "3763717342424960"
    at java.lang.NumberFormatException.forInputString(Unknown Source)
    at java.lang.Integer.parseInt(Unknown Source)
    at java.lang.Integer.parseInt(Unknown Source)

我的代码:

int t = Integer.parseInt(in.readLine());
while(t>0){
    t--;
    StringTokenizer sr = new StringTokenizer(in.readLine());
    int n = Integer.parseInt(sr.nextToken());
    int Q = Integer.parseInt(sr.nextToken());
    String[] S = new String[n];
    for(int i=0;i<n;i++) S[i]=in.readLine();
    while(Q>0){
        Q--;
        int index = Integer.parseInt(in.readLine());
        Batman(index, S, L,n-1);
    }
}

请帮我解决这个问题

6 个答案:

答案 0 :(得分:1)

您获得此异常的原因是因为最大值为2,147,483,647(含)。(2 ^ 31 -1)。

我建议你使用长数据类型。

有关数据类型及其大小的更多信息,请参阅:Basic Java Data Types

请告诉我这是否有帮助!

答案 1 :(得分:0)

对于整数来说,这个数字很大。

答案 2 :(得分:0)

最大整数为2147483647

使用long代替int

答案 3 :(得分:0)

你的字符串对于int来说太长了,试试Long

的Long.parseLong

答案 4 :(得分:0)

您尝试解析的数字大于maximum value an Integer can hold.

正如其他人所建议的那样,尝试将该号码存储为长号。您可以使用Long#parseLong()方法将String转换为long。

答案 5 :(得分:0)

使用Long prarseLong,因为该值超出了int的限制。