java IO练习:用程序实现从键盘上输入任意年份和月份,输出该月份的日历,并输出到文件中。
时间: 2024-03-11 07:50:56 浏览: 128
Java中的标准IO方法
以下是一个简单的 Java IO 练习示例代码,实现了从控制台输入年份和月份,输出该月份的日历,并将结果输出到文件中。
```java
import java.io.*;
public class CalendarExample {
public static void main(String[] args) {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
try {
// 从控制台读取年份和月份
System.out.print("请输入年份:");
int year = Integer.parseInt(br.readLine());
System.out.print("请输入月份:");
int month = Integer.parseInt(br.readLine());
// 输出该月份的日历
String calendar = getCalendar(year, month);
System.out.println(calendar);
// 将结果输出到文件中
BufferedWriter bw = new BufferedWriter(new FileWriter("calendar.txt"));
bw.write(calendar);
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
private static String getCalendar(int year, int month) {
StringBuilder sb = new StringBuilder();
sb.append("日\t一\t二\t三\t四\t五\t六\n");
// 计算当月第一天是星期几
int firstDayOfWeek = getFirstDayOfWeek(year, month);
// 计算当月总天数
int daysInMonth = getDaysInMonth(year, month);
// 输出日历表格
int day = 1;
for (int i = 0; i < 6; i++) {
for (int j = 0; j < 7; j++) {
if (i == 0 && j < firstDayOfWeek) {
// 第一行前面的空格
sb.append("\t");
} else if (day <= daysInMonth) {
// 输出日期
sb.append(day++).append("\t");
} else {
// 最后一行后面的空格
sb.append("\t");
}
}
sb.append("\n");
}
return sb.toString();
}
private static int getFirstDayOfWeek(int year, int month) {
// 计算当月第一天是星期几
java.util.Calendar cal = java.util.Calendar.getInstance();
cal.set(year, month - 1, 1);
return cal.get(java.util.Calendar.DAY_OF_WEEK) - 1;
}
private static int getDaysInMonth(int year, int month) {
// 计算当月总天数
int daysInMonth;
if (month == 2) {
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
daysInMonth = 29;
} else {
daysInMonth = 28;
}
} else if (month == 4 || month == 6 || month == 9 || month == 11) {
daysInMonth = 30;
} else {
daysInMonth = 31;
}
return daysInMonth;
}
}
```
该程序通过 `BufferedReader` 实现从控制台读取用户输入的年份和月份,然后调用 `getCalendar` 方法计算该月份的日历,最后将结果输出到文件中。`getCalendar` 方法中使用了 `StringBuilder` 拼接日历表格,并通过 `java.util.Calendar` 类来计算当月第一天是星期几以及当月总天数。`getFirstDayOfWeek` 方法用于计算当月第一天是星期几,`getDaysInMonth` 方法用于计算当月总天数。
阅读全文