&引用;“BufferedReader”;vs.“;java.io.BufferedReader";。这有关系吗?

&引用;“BufferedReader”;vs.“;java.io.BufferedReader";。这有关系吗?,java,intellij-idea,bufferedreader,Java,Intellij Idea,Bufferedreader,这里是Java新手。所以,我是从Aristides S.Bouras的《Java和算法思考完全初学者》一书中学习Java的,我一直在学习用户输入的语法。这是这本书的原始代码片段 java.io.BufferedReader cin = new java.io.BufferedReader(new java.io.InputStreamReader(System.in)); String name; int age; name = cin.readLine(); age = Integer.p

这里是Java新手。所以,我是从Aristides S.Bouras的《Java和算法思考完全初学者》一书中学习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中使用上面的代码,但出现以下错误:


我本想使用scanner方法,用其他类型的输入方法来“绕过”这个问题,但是任何对错误的洞察都将不胜感激。而且,我认为在第一行代码中连续三次包含“java.io.”是不必要的,对吗?如果有理由的话,请不要提我的问题。谢谢大家!

使用
BufferedReader
java.io.BufferedReader
之间没有区别,除了人类如何读取代码。也就是说,结果代码不会更快/更慢,或正确/不正确等。请注意,如果在代码中使用
BufferedReader
,则需要包含一条import语句,以便编译器知道在哪里可以找到BufferedReader,如下所示:
import java.io.BufferedReader

通过调用
cin.readLine()
,您遇到了其他问题。下面是一个示例,它显示了您所做工作的最简单版本(我省略了import语句,但也可以包括
import java.io.*;
)。编译器向您显示,
readLine()
存在问题,因为该方法被定义为引发异常,而您的代码没有处理该异常。在IntelliJ中,我看到以下错误消息:
unreportedexceptionjava.io.IOException;必须捕获或声明要抛出

public static void main(String[] args) {
    BufferedReader cin = new BufferedReader(new InputStreamReader(System.in));
    cin.readLine();
}
下面是修复代码的一种方法,以便它处理由
readLine()
引发的异常:


使用
BufferedReader
java.io.BufferedReader
之间没有区别,除了人类如何读取代码。也就是说,结果代码不会更快/更慢,或正确/不正确等。请注意,如果在代码中使用
BufferedReader
,则需要包含一条import语句,以便编译器知道在哪里可以找到BufferedReader,如下所示:
import java.io.BufferedReader

通过调用
cin.readLine()
,您遇到了其他问题。下面是一个示例,它显示了您所做工作的最简单版本(我省略了import语句,但也可以包括
import java.io.*;
)。编译器向您显示,
readLine()
存在问题,因为该方法被定义为引发异常,而您的代码没有处理该异常。在IntelliJ中,我看到以下错误消息:
unreportedexceptionjava.io.IOException;必须捕获或声明要抛出

public static void main(String[] args) {
    BufferedReader cin = new BufferedReader(new InputStreamReader(System.in));
    cin.readLine();
}
下面是修复代码的一种方法,以便它处理由
readLine()
引发的异常:


请参见,如果不导入类(或者如果需要消除不同包中具有相同名称的两个类之间的歧义),则必须使用完全限定的类名;至于例外情况,应该有一个关于
try-catch
语句的早期章节。您需要其中的一个,或者向您的
main
签名添加
抛出IOException
。@ScaryWombat。谢谢你的快速评论!我很抱歉,但我应该早点提到这一点;在编写代码之前,我已经完成了“import java.io.BufferedReader”和“import java.io.InputStreamReader”并添加星号,但效果不如IntelliJ警告我的“预期”。我尝试重新启动应用程序,但它仍然存在。我做错了什么?你还需要
与星型导入(例如,
导入java.io.*;
)。@elliotfrisch。谢谢你的快速回复,艾略特!我相信你的评论和Wombat的有点联系,虽然我还不确定,但当你说使用“完全限定类名”时,你是在暗示如果我不导入类(在我的例子中是BufferedReader和InputStreamReader),我就必须执行“java.io”。对吗?至于试捕,我会尽快查看,看看我能做些什么来修复它。请告诉我您的想法。如果您不
导入
类(或者如果您需要在不同包中使用相同名称的两个类之间消除歧义),则必须使用完全限定的类名;至于例外情况,应该有一个关于
try-catch
语句的早期章节。您需要其中的一个,或者向您的
main
签名添加
抛出IOException
。@ScaryWombat。谢谢你的快速评论!我很抱歉,但我应该早点提到这一点;在编写代码之前,我已经完成了“import java.io.BufferedReader”和“import java.io.InputStreamReader”并添加星号,但效果不如IntelliJ警告我的“预期”。我尝试重新启动应用程序,但它仍然存在。我做错了什么?你还需要
与星型导入(例如,
导入java.io.*;
)。@elliotfrisch。谢谢你的快速回复,艾略特!我相信你的评论和Wombat的有点联系,虽然我还不确定,但当你说使用“完全限定类名”时,你是在暗示如果我不导入类(在我的例子中是BufferedReader和InputStreamReader),我就必须执行“java.io”。对吗?至于试捕,我会尽快查看,看看我能做些什么来修复它。让我知道你的想法。你好@kaan,谢谢你深思熟虑的回答!你提到的一切我都能理解。事实上,当我尝试将星号包含到
java.io.BufferedReader
中时,IntelliJ会给我一个错误,表示需要分号,但更像是不需要ast