我已经为一个问题编写了代码。问题是用户首先输入一个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)
如果有人能告诉我我的错误那就非常好。 在此先感谢您的帮助。
答案 0 :(得分:1)
您的代码几乎没有问题 -
您要在for循环中拆分第二行,您应该将st
字符串拆分到for循环之外(在它之上),然后在for循环中迭代它。
您正在定义两个扫描仪,但实际上您不需要定义两个扫描仪,您可以删除扫描仪b
,只需使用扫描仪a
来获取所有输入。
当您执行a.nextInt()
时,您在int中读取,但文件句柄不会自动进入下一行,它仍然保持在您读取的int之后,并且有一个新的线还有待阅读。因此,当您在此之后执行a.nextLine()
时,您只能从当前行获取换行符。实际上你需要做a.nextLine()
一次(丢弃输出)再做一次。