java7天签到代码实现
时间: 2023-12-05 08:06:24 浏览: 73
以下是一个简单的 Java 签到代码实现,包含了 7 天签到的功能:
```java
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class SignIn {
// 用户签到信息保存在一个 Map 中,key 为用户 ID,value 为一周签到状态数组
private Map<Integer, boolean[]> checkInMap = new HashMap<>();
// 日期格式化对象
private SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
public void signIn(int userId) {
// 获取当前日期
String currentDate = dateFormat.format(new Date());
// 获取用户的签到状态数组
boolean[] checkInArray = checkInMap.getOrDefault(userId, new boolean[7]);
// 判断今天是否已经签到过了
if (checkInArray[getDayOfWeek() - 1]) {
System.out.println("您已经签到过了!");
return;
}
// 更新签到状态数组
checkInArray[getDayOfWeek() - 1] = true;
checkInMap.put(userId, checkInArray);
System.out.println(currentDate + " 签到成功!");
}
public void showCheckInStatus(int userId) {
// 获取用户的签到状态数组
boolean[] checkInArray = checkInMap.getOrDefault(userId, new boolean[7]);
StringBuilder sb = new StringBuilder();
sb.append("您的签到状态:");
for (int i = 0; i < 7; i++) {
sb.append(checkInArray[i] ? "已签到" : "未签到").append(" ");
}
System.out.println(sb.toString());
}
private int getDayOfWeek() {
// 获取今天是星期几
return Integer.parseInt(dateFormat.format(new Date()).split("-")[2]);
}
public static void main(String[] args) {
SignIn signIn = new SignIn();
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.println("请输入您的用户 ID:");
int userId = scanner.nextInt();
System.out.println("请选择操作:1.签到 2.查询签到状态 3.退出程序");
int choice = scanner.nextInt();
switch (choice) {
case 1:
signIn.signIn(userId);
break;
case 2:
signIn.showCheckInStatus(userId);
break;
case 3:
System.exit(0);
default:
System.out.println("输入有误,请重新选择!");
}
}
}
}
```
在上述代码中,用户的签到状态保存在一个 `Map` 中,每个用户对应一个长度为 7 的布尔数组,表示一周的签到状态。当用户签到时,根据当前日期判断是否已经签到过,如果没有签到过,则更新用户的签到状态数组,并输出签到成功信息;如果已经签到过了,则输出已经签到过的信息。当用户查询签到状态时,根据用户 ID 获取对应的签到状态数组,并输出每天的签到状态。
阅读全文