java实现连续签到加分_java实现app签到功能
时间: 2023-07-31 08:08:32 浏览: 54
实现连续签到加分的Java代码可以参考以下示例:
```
// 定义签到记录类
public class SignInRecord {
private Date signInDate;
private int signInScore;
public SignInRecord(Date signInDate, int signInScore) {
this.signInDate = signInDate;
this.signInScore = signInScore;
}
public Date getSignInDate() {
return signInDate;
}
public int getSignInScore() {
return signInScore;
}
}
// 定义签到管理类
public class SignInManager {
private List<SignInRecord> signInRecords;
private int maxContinuousDays; // 最大连续签到天数
private int continuousDays; // 当前连续签到天数
private int signInScore; // 签到得分
public SignInManager() {
signInRecords = new ArrayList<>();
maxContinuousDays = 0;
continuousDays = 0;
signInScore = 0;
}
public void signIn() {
Date today = new Date();
int score = 1;
if (!signInRecords.isEmpty()) {
// 判断是否连续签到
Date lastSignInDate = signInRecords.get(signInRecords.size() - 1).getSignInDate();
if (isContinuousSignIn(lastSignInDate, today)) {
continuousDays++;
score = continuousDays;
if (continuousDays > maxContinuousDays) {
maxContinuousDays = continuousDays;
}
} else {
continuousDays = 1;
}
}
signInRecords.add(new SignInRecord(today, score));
signInScore += score;
}
public int getMaxContinuousDays() {
return maxContinuousDays;
}
public int getContinuousDays() {
return continuousDays;
}
public int getSignInScore() {
return signInScore;
}
// 判断是否连续签到
private boolean isContinuousSignIn(Date lastSignInDate, Date today) {
Calendar lastCal = Calendar.getInstance();
lastCal.setTime(lastSignInDate);
int lastYear = lastCal.get(Calendar.YEAR);
int lastDayOfYear = lastCal.get(Calendar.DAY_OF_YEAR);
Calendar todayCal = Calendar.getInstance();
todayCal.setTime(today);
int todayYear = todayCal.get(Calendar.YEAR);
int todayDayOfYear = todayCal.get(Calendar.DAY_OF_YEAR);
return lastYear == todayYear && todayDayOfYear - lastDayOfYear == 1;
}
}
```
实现App签到功能的Java代码可以参考以下示例:
```
// 定义签到记录类
public class SignInRecord {
private Date signInDate;
public SignInRecord(Date signInDate) {
this.signInDate = signInDate;
}
public Date getSignInDate() {
return signInDate;
}
}
// 定义签到管理类
public class SignInManager {
private List<SignInRecord> signInRecords;
public SignInManager() {
signInRecords = new ArrayList<>();
}
public void signIn() {
Date today = new Date();
signInRecords.add(new SignInRecord(today));
}
public int getSignInCount() {
return signInRecords.size();
}
public boolean hasSignedInToday() {
if (signInRecords.isEmpty()) {
return false;
}
Date lastSignInDate = signInRecords.get(signInRecords.size() - 1).getSignInDate();
Calendar lastCal = Calendar.getInstance();
lastCal.setTime(lastSignInDate);
int lastYear = lastCal.get(Calendar.YEAR);
int lastDayOfYear = lastCal.get(Calendar.DAY_OF_YEAR);
Calendar todayCal = Calendar.getInstance();
int todayYear = todayCal.get(Calendar.YEAR);
int todayDayOfYear = todayCal.get(Calendar.DAY_OF_YEAR);
return lastYear == todayYear && lastDayOfYear == todayDayOfYear;
}
}
```
这两份代码仅供参考,实际应用中还需要根据业务需求进行相应的调整和优化。