NumberFormatException解析单个字符串中的多个数字

时间:2018-07-24 13:32:32

标签: java numberformatexception

所以我正在编写代码以在数组中添加不存在的内容,并且得到了一个运行时:

  

线程“主”中的异常java.lang.NumberFormatException:用于输入   字符串:“ 1000000001 1000000002 1000000003 1000000004 1000000005”   java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)     在java.lang.Long.parseLong(Long.java:589)在   java.lang.Long.parseLong(Long.java:631)在   Solution.main(Solution.java:20)

对于以下代码,因此我应该更改自己的代码,请提供帮助。这是代码:

import java.io.*;
public class Solution {



public static void main(String args[]) throws IOException 
{
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in)) ;
    int n= Integer.parseInt(br.readLine());
    long ar[] = new long[n];
    for(int i=0;i<n;i++)
    {
        ar[i] = Long.parseLong(br.readLine()); 
    }
    Long sum =0L;
    for(int i=0;i<n;i++)
    {
        sum= sum + ar[i];
    }
    System.out.println(sum);
} 
}

3 个答案:

答案 0 :(得分:1)

您正在阅读的完整行是

"1000000001 1000000002 1000000003 1000000004 1000000005"

不是要解析的有效数字。

首先用<space>将其断开,然后分别进行转换。

答案 1 :(得分:1)

如果

"1000000001 1000000002 1000000003 1000000004 1000000005"

是您对Long.parseLong()的输入,例外情况是,这不是数字。 数字不包含空格。 如果要分别解析该行中的数字,则需要先拆分该行。例如。

String[] numberStrings = br.readLine().split(" ");

然后您可以为Long.parseLong()的每个元素执行numberStrings

编辑您需要更改的内容

代替此:

for(int i=0;i<n;i++)
{
    ar[i] = Long.parseLong(br.readLine()); 
}

您需要执行以下操作:

String[] numberStrings = br.readLine().split(" ");
for(int i=0;i<n;i++)
{
    ar[i] = Long.parseLong(numberStrings[i]); 
}

答案 2 :(得分:0)

您要在一行中输入所有输入内容,而应该在不同行中输入输入内容