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