对数组元素求和

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)

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

您的代码几乎没有问题 -

  1. 您在 for 循环内拆分第二行,您应该在 for 循环外(在其上方)拆分 st 字符串,然后在 for 循环中遍历它。

  2. 你定义了两个扫描器,但实际上你不需要定义两个,你可以删除扫描器b,只使用扫描器a获取所有输入。

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