猿问

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

所以我正在编写一个代码来在数组中添加 no present 并且我得到了一个运行时:


线程“main”中的异常 java.lang.NumberFormatException:对于输入字符串:“1000000001 1000000002 1000000003 1000000004 1000000005”在 java.lang.NumberFormatException.forInputString(NumberFormatException.java.Long.java.parse at java.Long.Long.java:65) :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);

}


婷婷同学_
浏览 169回答 3
3回答

慕田峪7331174

您正在阅读完整的一行"1000000001&nbsp;1000000002&nbsp;1000000003&nbsp;1000000004&nbsp;1000000005"不是要解析的有效数字。首先打破它&nbsp;<space>并单独转换它们。

慕慕森

如果这"1000000001 1000000002 1000000003 1000000004 1000000005"是您对 的输入Long.parseLong(),异常意味着这不是数字。数字不包含空格。如果您想单独解析该行中的数字,则需要在执行此操作之前拆分该行。例如String[] numberStrings = br.readLine().split(" ");然后你可以Long.parseLong()为numberStrings.编辑您需要更改的内容取而代之的是:for(int i=0;i<n;i++){&nbsp; &nbsp; ar[i] = Long.parseLong(br.readLine());&nbsp;}你需要这样做:String[] numberStrings = br.readLine().split(" ");for(int i=0;i<n;i++){&nbsp; &nbsp; ar[i] = Long.parseLong(numberStrings[i]);&nbsp;}

慕后森

你在一行中给出所有输入 你应该在不同的行中给出输入
随时随地看视频慕课网APP

相关分类

Java
我要回答