在IntelliJ上运行代码时没有收到错误消息。但是,当我尝试提交我正在处理的作业的代码时,我得到了两个测试用例的 NFE。我删除了我的所有代码,只让下面的代码在测试用例中运行。这里的某个地方一定是一个NumberFormatException.
public class Search {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
sc.nextLine();
int[] list = new int[n];
String [] tokens = sc.nextLine().trim().split(" ");
for (int i=0; i<tokens.length;i++){
list[i]=Integer.parseInt(tokens[i]);
}
}
}
我读到了双空格并检查了这一点:System.out.println(Arrays.asList(tokens).contains(""));
输出为假,所以这不是一个选项。如您所见,我已经在使用trim(). 我会很感激你的帮助。路易斯
Eddit:好吧,这里有些可疑。我添加了
System.out.println(Arrays.asList(tokens).contains(""));
System.out.println(Arrays.toString(tokens));
到我的代码并将其交给测试用例。虽然 IntelliJ 会传递 false 后跟整数数组,但测试用例输出: true [] 。因此,你们都是对的,我只是错误地假设我的测试用例中的输入与我在作业中给出的示例输入相似。
编辑2:
好吧!我想到了。测试用例的输入与我的测试输入中的格式完全不同,看起来有点像这样:
10
8 8 9 12 110 111 117 186 298 321
2
8 13
我假设我包含的 sc.nextLine() 跳过了我需要制作列表的整数。所以实际的问题不是多余的空格或任何东西,只是我通过使用 sc.nextLine() 超越了我想要的输入。给出了我需要的提示的答案,即使我不认为这是有意的,来自 Andronicus。无论如何都要感谢其他人。