【发布时间】:2020-03-30 14:13:23
【问题描述】:
有人可以解释一下,为什么编译器在第 19 行向我抛出异常?我只是想不通...我在 HackerRank 上解决了一些练习,我知道,有解决方案,但是我的代码可以完美运行,直到 1 个测试用例引发异常。尽管我阅读了有关此的博客文章,但我根本无法弄清楚。
import java.util.*;
import java.io.*;
import java.util.Scanner;
class Solution{
public static void main(String []args) {
Scanner scanner = new Scanner(System.in);
Map<String, String> contactBook = new HashMap<>();
int n = scanner.nextInt();
scanner.next();
for(int i = 0; i < n; i++) {
String name = scanner.nextLine();
String phoneNumber = scanner.nextLine();
contactBook.put(name, phoneNumber);
}
while(n-- > 0) {
String search = scanner.nextLine();
if(contactBook.containsKey(search)) {
System.out.println(search + "=" + contactBook.get(search));
} else {
System.out.println("Not found");
}
}
}
}
【问题讨论】:
-
将紧跟在
int n = scanner.nextInt();之后的行scanner.next();更改为scanner.nextLine()。 Here is why 这应该会有所帮助。 -
首先,从tour 开始阅读How to Ask。特别是,您的问题缺少错误消息,并且代码也可以减少,因此它更接近minimal reproducible example。另外,首先,你说它是编译器,然后你说它是一个测试用例。实际发生了什么?
标签: java exception java.util.scanner nosuchelementexception