为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

婷婷同学_ 2021-06-03 18:43:22
所以我正在编写一个代码来在数组中添加 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);} }
查看完整描述

3 回答

?
慕田峪7331174

TA贡献1828条经验 获得超13个赞

您正在阅读完整的一行

"1000000001 1000000002 1000000003 1000000004 1000000005"

不是要解析的有效数字。

首先打破它 <space>并单独转换它们。


查看完整回答
反对 回复 2021-06-10
?
慕慕森

TA贡献1856条经验 获得超17个赞

如果这


"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]); 

}


查看完整回答
反对 回复 2021-06-10
?
慕后森

TA贡献1802条经验 获得超5个赞

你在一行中给出所有输入 你应该在不同的行中给出输入


查看完整回答
反对 回复 2021-06-10
  • 3 回答
  • 0 关注
  • 164 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信