Java输入输出与闰年判断实战解析:键盘输入处理与条件判断
一、原题完整代码呈现
以下是计算机二级Java考试中关于键盘输入和闰年判断的典型题型,包含4处需要填写的空白(标记为//*********Found**********
):
//*********Found**********
import java.____________.*;
public class Java_1{
//*********Found**********
public static void main(String[] args) ____________ Exception{
InputStreamReader ir;
BufferedReader in;
ir=new InputStreamReader(System.in);
in=new BufferedReader(ir);
System.out.println("输入年份是:");
//*********Found**********
String s=____________.readLine();
//*********Found**********
int year=Integer.parseInt(_____________);
if(year%4==0&&year%100!=0||year%400==0){
System.out.println(""+year+"年是闰年.");
}
else{
System.out.println(""+year+"年不是闰年.");
}
}
}
二、空白处逐一解析与解答
1. 第一处空白:输入输出包导入
答案:io
//*********Found**********
import java.io.*;
解析:
程序中使用了InputStreamReader
和BufferedReader
类,这些类属于Java的输入输出包java.io
。import java.io.*;
语句用于导入该包下的所有类,使程序能够识别这些输入处理相关的类。
2. 第二处空白:异常声明
答案:throws
//*********Found**********
public static void main(String[] args) throws Exception{
解析: BufferedReader
的readLine()
方法会抛出IOException
,这是一种已检查异常。处理异常的方式有两种:使用try-catch
块捕获,或在方法声明中用throws
关键字声明抛出。本题采用后者,因此填写throws
。
3. 第三处空白:读取输入的对象
答案:in
//*********Found**********
String s=in.readLine();
解析:
前面已经创建了BufferedReader
对象in
(in=new BufferedReader(ir);
),BufferedReader
的readLine()
方法用于读取一行文本输入。因此此处应通过in
对象调用该方法,将读取的字符串存储到s
变量中。
4. 第四处空白:字符串转整数的参数
答案:s
//*********Found**********
int year=Integer.parseInt(s);
解析: Integer.parseInt(String s)
方法用于将字符串转换为整数。前面已经通过readLine()
将用户输入的年份读取到字符串变量s
中,此处需要将s
作为参数传入,转换为整数类型的year
变量,以便进行闰年判断。
三、完整正确代码
四、程序功能与运行说明
程序功能
该程序实现以下功能:
- 通过键盘接收用户输入的年份(字符串形式)
- 将输入的字符串转换为整数
- 根据闰年判断规则,判断该年份是否为闰年
- 输出判断结果
运行说明
- 程序运行后,会显示提示信息"输入年份是:"
- 用户需要输入一个整数年份(如2020、2023等)并按回车
程序会自动判断该年份是否为闰年,并输出结果:
- 闰年输出:"XXXX年是闰年."
- 非闰年输出:"XXXX年不是闰年."
五、核心知识点总结
输入处理流
InputStreamReader
:将字节流(System.in
)转换为字符流BufferedReader
:提供缓冲功能,其readLine()
方法可读取一行文本- 流的嵌套关系:
System.in
→InputStreamReader
→BufferedReader
,形成处理链
异常处理方式
- 声明抛出:在方法签名中用
throws Exception
声明可能抛出的异常 - 捕获处理:使用
try-catch
块捕获并处理异常 - 本题采用声明抛出方式,简化了代码结构(实际开发中更推荐
try-catch
)
- 声明抛出:在方法签名中用
类型转换
Integer.parseInt(String s)
:将字符串转换为整数- 注意事项:如果字符串不是合法的整数格式,会抛出
NumberFormatException
闰年判断规则
- 能被4整除但不能被100整除,或者能被400整除的年份是闰年
- 逻辑表达式:
year%4==0&&year%100!=0||year%400==0
- 优先级说明:
&&
优先级高于||
,确保判断逻辑正确
六、常见错误与应试技巧
常见错误分析
- 第一处空白写错包名:如
input
或output
,正确包名是io
- 第二处空白使用
throw
而非throws
:throw
用于抛出具体异常对象,throws
用于方法声明 - 第三处空白用
ir
调用readLine()
:InputStreamReader
没有readLine()
方法,需通过BufferedReader
对象in
调用 - 第四处空白直接写字符串:如
"s"
,应传入变量s
而非字符串字面量
- 第一处空白写错包名:如
应试技巧
- IO包记忆:输入输出相关类都在
java.io
包中 - 输入流链模板:
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
- 类型转换口诀:字符串转整数用
Integer.parseInt(字符串变量)
- 闰年规则:记住"四年一闰,百年不闰,四百年再闰"的判断逻辑
- IO包记忆:输入输出相关类都在
通过本题,我们掌握了Java中键盘输入的处理方法、字符串与整数的类型转换,以及闰年判断的逻辑实现。这些知识点在实际开发中常用于数据输入、格式转换和业务逻辑判断,是Java基础编程的重要组成部分,也是计算机二级Java考试的常见考点。