"BufferedReader" 对比 "java.io.BufferedReader"。有关系吗?

"BufferedReader" vs. "java.io.BufferedReader". Does it matter?

Java新手看这里。因此,我从 Aristides S. Bouras 的这本书 Java 和 Algorithmic Thinking for the Complete Beginner 中学习 Java,并且一直在学习用户输入的语法。这是书中的原始代码片段

java.io.BufferedReader cin = new java.io.BufferedReader(new java.io.InputStreamReader(System.in));

String name;
int age;

name = cin.readLine();
age = Integer.parseInt(cin.readLine());
System.out.print("Wow, you are already" + age + "years old," + name + "!");

我尝试在 IntelliJ 中使用上面的确切代码,但出现以下错误:

我正在考虑 "walk around" 使用扫描仪方法从 article 其他类型的输入法中解决这个问题,但如果能深入了解错误,我们将不胜感激。而且,我认为对于第一行代码来说,连续三次包含 "java.io." 是不必要的,对吗?如果有理由,请谦虚我的提问。谢谢大家!

使用 BufferedReaderjava.io.BufferedReader 之间没有区别,只是人们阅读代码的方式不同。也就是说,生成的代码不会是 faster/slower 或 correct/incorrect 等。请注意,如果您在代码中使用 BufferedReader,则需要包含一个导入语句,以便编译器知道在哪里可以找到 BufferedReader,如下所示:import java.io.BufferedReader;.

虽然通过调用 cin.readLine(),但您 运行 正在做其他事情。这是一个显示您正在执行的操作的最小版本的示例(我省略了导入语句,但您也可以包括 import java.io.*;)。编译器向您显示 readLine() 存在问题,因为该方法被定义为抛出异常,而您的代码未处理它。在 IntelliJ 中,我看到此错误消息:unreported exception java.io.IOException; must be caught or declared to be thrown.

public static void main(String[] args) {
    BufferedReader cin = new BufferedReader(new InputStreamReader(System.in));
    cin.readLine();
}

这是一种修复代码的方法,它可以处理 readLine() 抛出的异常:

public static void main(String[] args) {
    BufferedReader cin = new BufferedReader(new InputStreamReader(System.in));
    try {
        cin.readLine();
    } catch (IOException e) {
        e.printStackTrace();
    }
}