租期共5年:其中基本租期:3年, 递增租期2年,租金递增率:6%/年, 租赁开始时间 2021-03-01 租赁结束时间 2026-03-01 免租开始时间:2021-03-01 免租结束时间:2021-03-31 ,基本租期内月租金:600,需求:java生成每月租金计划列表
时间: 2023-08-15 15:06:40 浏览: 166
基于java开发房屋租赁系统源码,供参考使用
好的,根据您提供的信息,我为您生成了每月租金计划列表的Java代码:
```java
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
public class RentScheduleGenerator {
public static void main(String[] args) {
// 租赁开始时间
LocalDate startDate = LocalDate.of(2021, 3, 1);
// 租赁结束时间
LocalDate endDate = LocalDate.of(2026, 3, 1);
// 基本租期(月数)
int baseTerm = 36;
// 递增租期(月数)
int incTerm = 24;
// 租金递增率
double incRate = 0.06;
// 基本租期内月租金
double baseRent = 600.0;
// 免租开始时间
LocalDate freeStartDate = LocalDate.of(2021, 3, 1);
// 免租结束时间
LocalDate freeEndDate = LocalDate.of(2021, 3, 31);
List<RentSchedule> scheduleList = generateRentSchedule(startDate, endDate, baseTerm, incTerm, incRate, baseRent, freeStartDate, freeEndDate);
for (RentSchedule schedule : scheduleList) {
System.out.println(schedule.toString());
}
}
/**
* 生成每月租金计划列表
* @param startDate 租赁开始时间
* @param endDate 租赁结束时间
* @param baseTerm 基本租期(月数)
* @param incTerm 递增租期(月数)
* @param incRate 租金递增率
* @param baseRent 基本租期内月租金
* @param freeStartDate 免租开始时间
* @param freeEndDate 免租结束时间
* @return 租金计划列表
*/
public static List<RentSchedule> generateRentSchedule(LocalDate startDate, LocalDate endDate, int baseTerm, int incTerm, double incRate, double baseRent, LocalDate freeStartDate, LocalDate freeEndDate) {
List<RentSchedule> scheduleList = new ArrayList<>();
LocalDate currDate = startDate;
BigDecimal rent = new BigDecimal(baseRent);
int termCount = 0;
while (currDate.isBefore(endDate)) {
RentSchedule schedule = new RentSchedule();
schedule.setDate(currDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
if (currDate.isBefore(freeEndDate) && currDate.plusMonths(1).isAfter(freeStartDate)) {
// 当月在免租期内
schedule.setRent(new BigDecimal(0));
} else {
// 当月不在免租期内
schedule.setRent(rent);
termCount++;
if (termCount > baseTerm && (termCount - baseTerm) % incTerm == 0) {
// 递增租期内
rent = rent.multiply(new BigDecimal(1 + incRate));
}
}
scheduleList.add(schedule);
currDate = currDate.plusMonths(1);
}
return scheduleList;
}
/**
* 租金计划类
*/
public static class RentSchedule {
private String date; // 日期
private BigDecimal rent; // 租金
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
public BigDecimal getRent() {
return rent;
}
public void setRent(BigDecimal rent) {
this.rent = rent;
}
@Override
public String toString() {
return "RentSchedule [date=" + date + ", rent=" + rent + "]";
}
}
}
```
运行代码后,会输出从2021年3月1日到2026年3月1日的每月租金计划,其中免租期内的租金为0元。您可以根据实际需求修改参数和输出方式。
阅读全文