CCC 2013 J4 NoSuchElementException吗?

时间:2019-02-14 02:31:36

标签: java exception

这是我的代码:

import java.util.*;

 public class Main {
    public static void main(String[] args) {
       Scanner sc = new Scanner(System.in);

       System.out.println(solution(sc.nextInt(), sc.nextInt()));


}

public static int solution(int totalMin, int chores) {
    Scanner sc = new Scanner(System.in);

    int[] choresTime = new int[chores];
    int choresDone = 0;


    for (int i = 0; i < chores; i++) {
        choresTime[i] = sc.nextInt();

    }

    // Sorting the Array's Values from Least to Greatest

    Arrays.sort(choresTime);

    for (int i = 0; i < choresTime.length; i++) {
        if (totalMin - choresTime[i] < 0) {
            break;

        } else {
            totalMin -= choresTime[i];
            choresDone++;

        }

    }

    return choresDone;

   }
}

即使此代码在IntelliJ上运行良好,当我在DMOJ上检查答案时,也会出现NoSuchElementException。

DMOJ上的执行结果:

测试案例1:IR(java.util.NoSuchElementException)[0.627s,39.98 MB](0/10)

测试案例2:IR(java.util.NoSuchElementException)[0.546s,39.15 MB](0/10)

测试案例3:IR(java.util.NoSuchElementException)[0.466s,39.70 MB](0/10)

测试案例4:IR(java.util.NoSuchElementException)[0.445s,39.64 MB](0/10)

测试案例5:IR(java.util.NoSuchElementException)[0.421s,39.55 MB](0/10)

有人知道为什么吗?

1 个答案:

答案 0 :(得分:0)

您在代码中声明了多个 Scanner。一般来说,拥有两个 Scanner 对象是不好的,因为它可能会导致问题。在这种情况下,Java 似乎正在关闭第一个 Scanner 对象,而后者又关闭了 System.in,因此第二个 Scanner 无法从中读取。将 Scanner 放在 main 方法 (static Scanner sc = new Scanner(System.in);) 之外并删除第二个扫描仪让我了解这个问题。

https://dmoj.ca/submission/3307266