用Java语言编写一个具有每日记账功能的简易日历
时间: 2023-09-06 15:13:10 浏览: 54
以下是一个简单的Java程序,可以让您记录每日的支出和收入,并将其显示在日历上:
```java
import java.util.*;
public class DailyCalendar {
private static Map<Date, Double> expenses = new HashMap<>();
private static Scanner scanner = new Scanner(System.in);
public static void main(String[] args) {
boolean quit = false;
while (!quit) {
System.out.println("\nEnter 1 to add an expense, 2 to print calendar, or 3 to quit:");
int choice = scanner.nextInt();
switch (choice) {
case 1:
addExpense();
break;
case 2:
printCalendar();
break;
case 3:
quit = true;
break;
default:
System.out.println("Invalid choice.");
}
}
}
private static void addExpense() {
System.out.println("\nEnter the date (MM/DD/YYYY):");
String dateString = scanner.next();
System.out.println("Enter the amount:");
double amount = scanner.nextDouble();
Date date = parseDate(dateString);
if (!expenses.containsKey(date)) {
expenses.put(date, amount);
} else {
expenses.put(date, expenses.get(date) + amount);
}
System.out.println("Expense added.");
}
private static void printCalendar() {
System.out.println("\nEnter the month and year (MM/YYYY):");
String monthYearString = scanner.next();
String[] parts = monthYearString.split("/");
int month = Integer.parseInt(parts[0]);
int year = Integer.parseInt(parts[1]);
Calendar calendar = Calendar.getInstance();
calendar.set(year, month - 1, 1);
int daysInMonth = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
double totalExpenses = 0;
for (int i = 1; i <= daysInMonth; i++) {
calendar.set(year, month - 1, i);
Date date = calendar.getTime();
double expense = expenses.getOrDefault(date, 0.0);
System.out.printf("%2d: $%.2f\n", i, expense);
totalExpenses += expense;
}
System.out.printf("\nTotal expenses for %s: $%.2f\n", monthYearString, totalExpenses);
}
private static Date parseDate(String dateString) {
try {
return new SimpleDateFormat("MM/dd/yyyy").parse(dateString);
} catch (ParseException e) {
System.out.println("Invalid date format.");
return null;
}
}
}
```
该程序使用了一个`Map`来存储每个日期的支出和收入总额,用户可以选择添加支出和收入,或者查看特定月份的日历和总支出。您可以根据需要对其进行修改和扩展。