求和数组的元素

时间:2015-06-23 15:19:35

标签: java runtime-error

我已经为一个问题编写了代码。问题是用户首先输入一个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)

如果有人能告诉我我的错误那就非常好。 在此先感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您的代码几乎没有问题 -

  1. 您要在for循环中拆分第二行,您应该将st字符串拆分到for循环之外(在它之上),然后在for循环中迭代它。

    < / LI>
  2. 您正在定义两个扫描仪,但实际上您不需要定义两个扫描仪,您可以删除扫描仪b,只需使用扫描仪a来获取所有输入。

  3. 当您执行a.nextInt()时,您在int中读取,但文件句柄不会自动进入下一行,它仍然保持在您读取的int之后,并且有一个新的线还有待阅读。因此,当您在此之后执行a.nextLine()时,您只能从当前行获取换行符。实际上你需要做a.nextLine()一次(丢弃输出)再做一次。