对数组元素求和
Summing elements of array
我写了一道题的代码。问题说用户将首先输入一个 int,它是元素的数量,而不是用户输入的元素和程序显示它的总和。
我的程序在 Netbeans 中运行良好,但在在线编译器中出现 运行 时间错误。
这是代码
public class Solution {
public static void main(String[] args){
long sum=0 ;
Scanner a=new Scanner(System.in);
int not=a.nextInt();
Scanner b=new Scanner (System.in);
String st=b.nextLine();
int[] ty=new int[not];
for(int i=0;i<not;i++)
{
String[] u=st.split(" ");
String uo=u[i];
long num=Long.parseLong(uo);
sum=num+sum;
}
System.out.println(sum);
} }
出现错误信息
Exception in thread "main" java.util.NoSuchElementException: No line found
at java.util.Scanner.nextLine(Scanner.java:1540)
at Solution.main(Solution.java:12)
如果有人能告诉我我的错误,那就太好了。
在此先感谢您的帮助。
您的代码几乎没有问题 -
您在 for 循环内拆分第二行,您应该在 for 循环外(在其上方)拆分 st
字符串,然后在 for 循环中遍历它。
你定义了两个扫描器,但实际上你不需要定义两个,你可以删除扫描器b
,只使用扫描器a
获取所有输入。
当你做a.nextInt()
时你读入了int,但是文件句柄不会自动进入下一行,它仍然停留在你读入的int之后,并且还有一行要读。因此,当您之后执行 a.nextLine()
时,您只会从当前行获取换行符。你实际上需要做一次a.nextLine()
(丢弃输出)然后再做一次。
我写了一道题的代码。问题说用户将首先输入一个 int,它是元素的数量,而不是用户输入的元素和程序显示它的总和。
我的程序在 Netbeans 中运行良好,但在在线编译器中出现 运行 时间错误。
这是代码
public class Solution {
public static void main(String[] args){
long sum=0 ;
Scanner a=new Scanner(System.in);
int not=a.nextInt();
Scanner b=new Scanner (System.in);
String st=b.nextLine();
int[] ty=new int[not];
for(int i=0;i<not;i++)
{
String[] u=st.split(" ");
String uo=u[i];
long num=Long.parseLong(uo);
sum=num+sum;
}
System.out.println(sum);
} }
出现错误信息
Exception in thread "main" java.util.NoSuchElementException: No line found
at java.util.Scanner.nextLine(Scanner.java:1540)
at Solution.main(Solution.java:12)
如果有人能告诉我我的错误,那就太好了。 在此先感谢您的帮助。
您的代码几乎没有问题 -
您在 for 循环内拆分第二行,您应该在 for 循环外(在其上方)拆分
st
字符串,然后在 for 循环中遍历它。你定义了两个扫描器,但实际上你不需要定义两个,你可以删除扫描器
b
,只使用扫描器a
获取所有输入。当你做
a.nextInt()
时你读入了int,但是文件句柄不会自动进入下一行,它仍然停留在你读入的int之后,并且还有一行要读。因此,当您之后执行a.nextLine()
时,您只会从当前行获取换行符。你实际上需要做一次a.nextLine()
(丢弃输出)然后再做一次。