IO练习:从键盘上输入任意年份和月份,输出该月份的日历,并输出到文件中。JAVA
时间: 2024-03-11 21:50:40 浏览: 59
java代码-使用java从键盘输入月份,输出这个月的天数,比如输入是1,则输出31天的源代码
5星 · 资源好评率100%
好的,这个问题需要用到一些 Java 的基础知识和类库,我来帮你解答。
首先,我们需要用到 Java 内置的类库 `java.util.Calendar`,它提供了一些用于处理日历的方法。我们可以使用 `Calendar.getInstance()` 方法来获取一个 `Calendar` 对象,然后使用 `set(year, month, day)` 方法来设置年份和月份,最后使用 `getActualMaximum(Calendar.DAY_OF_MONTH)` 方法来获取该月的天数。
接下来,我们需要读取用户从键盘输入的年份和月份。可以使用 `Scanner` 类来实现,如下所示:
```java
Scanner scanner = new Scanner(System.in);
System.out.print("请输入年份:");
int year = scanner.nextInt();
System.out.print("请输入月份:");
int month = scanner.nextInt();
```
接下来,我们可以使用 `Calendar` 类来获取日历,然后将其输出到控制台上,代码如下所示:
```java
import java.util.Calendar;
import java.util.Scanner;
public class CalendarDemo {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入年份:");
int year = scanner.nextInt();
System.out.print("请输入月份:");
int month = scanner.nextInt();
Calendar cal = Calendar.getInstance();
cal.set(year, month - 1, 1);
System.out.println(cal.getDisplayName(Calendar.MONTH, Calendar.LONG, null) + " " + year);
System.out.println("Su Mo Tu We Th Fr Sa");
int maxDay = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
int firstDayOfWeek = cal.get(Calendar.DAY_OF_WEEK);
for (int i = 1, day = 1; day <= maxDay; i++) {
StringBuilder sb = new StringBuilder();
for (int j = 1; j <= 7; j++) {
if (day > maxDay) {
sb.append(" ");
} else if (i == 1 && j < firstDayOfWeek) {
sb.append(" ");
} else {
sb.append(String.format("%2d ", day));
day++;
}
}
System.out.println(sb.toString());
}
}
}
```
最后,我们需要将输出的日历保存到文件中。可以使用 `PrintWriter` 类来打开一个文件,然后使用 `println()` 方法将日历写入文件,代码如下所示:
```java
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.Calendar;
import java.util.Scanner;
public class CalendarDemo {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入年份:");
int year = scanner.nextInt();
System.out.print("请输入月份:");
int month = scanner.nextInt();
Calendar cal = Calendar.getInstance();
cal.set(year, month - 1, 1);
System.out.println(cal.getDisplayName(Calendar.MONTH, Calendar.LONG, null) + " " + year);
System.out.println("Su Mo Tu We Th Fr Sa");
int maxDay = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
int firstDayOfWeek = cal.get(Calendar.DAY_OF_WEEK);
StringBuilder sb = new StringBuilder();
for (int i = 1, day = 1; day <= maxDay; i++) {
for (int j = 1; j <= 7; j++) {
if (day > maxDay) {
sb.append(" ");
} else if (i == 1 && j < firstDayOfWeek) {
sb.append(" ");
} else {
sb.append(String.format("%2d ", day));
day++;
}
}
sb.append("\n");
}
try (PrintWriter out = new PrintWriter("calendar.txt")) {
out.println(cal.getDisplayName(Calendar.MONTH, Calendar.LONG, null) + " " + year);
out.println("Su Mo Tu We Th Fr Sa");
out.print(sb.toString());
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
```
这样,我们就完成了从键盘输入任意年份和月份,输出该月份的日历,并将其输出到文件中的任务。
阅读全文