所以我正在编写代码以在数组中添加不存在的内容,并且得到了一个运行时:
线程“主”中的异常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);
}
}
答案 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)
您要在一行中输入所有输入内容,而应该在不同行中输入输入内容