根据艾宾浩斯遗忘曲线来安排学习复习计划

import java.util.HashMap;
public class Ebbinghaus{
	public static int intSteps = 15;
	public static int[] intMemory = {1,2,4,7,15};
	
	public static void main(String[] args){
		HashMap resultMap = new HashMap();
		int resultDays = totalDaysInList();
		for(int i=1;i<=intSteps;i++){
			for(int j=1;j<=intSteps+resultDays;j++){
				String strKey = "Day"+j;
				HashMap valueMap = new HashMap();
				if(resultMap.get(strKey)!=null){
					valueMap = (HashMap)resultMap.get(strKey);
				}
				
				String strReview = "Review : ";
				if(valueMap.get("Review")!=null){
					strReview = (String) valueMap.get("Review");
				}
				if(i==j){
					String strNew = "New : ";
					if(valueMap.get("New")!=null){
						strNew = (String) valueMap.get("New");
					}
					strNew += ("Step"+i+" ");
					strReview += ("Step"+i+" ");
					valueMap.put("New",strNew);
				}else{
					int loopNo = 0;
					int beforeDays = 0;
					do {
						if(loopNo>=0){
							beforeDays += intMemory[loopNo];
						}
						if(j == (i+beforeDays)){
							strReview += ("Step"+i+" ");
						}
						loopNo++;
					} while (loopNo<intMemory.length);
				}
				valueMap.put("Review",strReview);
				resultMap.put(strKey, valueMap);
			}
		}
		for(int j=1;j<=intSteps+resultDays;j++){
			String strDay = "Day"+j;
			System.out.println(strDay+":");
			HashMap valueMap = (HashMap)resultMap.get(strDay);
			if(valueMap.get("New") != null || "New : ".equals(valueMap.get("New"))){
				System.out.println("      "+valueMap.get("New"));
			}
			System.out.println("      "+valueMap.get("Review"));
		}
	}
	
	public static int totalDaysInList(){
		int resultDays = 0;
		int loopDay = 0;
		do {
			resultDays += intMemory[loopDay];
			loopDay++;
		} while (loopDay<intMemory.length);
		return resultDays;
	}
}

intSteps代表的是你要学习的单元数量。

生成结果:

Day1:

      New : Step1 

      Review : Step1 

Day2:

      New : Step2 

      Review : Step1 Step2 

Day3:

      New : Step3 

      Review : Step2 Step3 

Day4:

      New : Step4 

      Review : Step1 Step3 Step4 

Day5:

      New : Step5 

      Review : Step2 Step4 Step5 

Day6:

      New : Step6 

      Review : Step3 Step5 Step6 

Day7:

      New : Step7 

      Review : Step4 Step6 Step7 

Day8:

      New : Step8 

      Review : Step1 Step5 Step7 Step8 

Day9:

      New : Step9 

      Review : Step2 Step6 Step8 Step9 

Day10:

      New : Step10 

      Review : Step3 Step7 Step9 Step10 

Day11:

      New : Step11 

      Review : Step4 Step8 Step10 Step11 

Day12:

      New : Step12 

      Review : Step5 Step9 Step11 Step12 

Day13:

      New : Step13 

      Review : Step6 Step10 Step12 Step13 

Day14:

      New : Step14 

      Review : Step7 Step11 Step13 Step14 

Day15:

      New : Step15 

      Review : Step1 Step8 Step12 Step14 Step15 

Day16:

      Review : Step2 Step9 Step13 Step15 

Day17:

      Review : Step3 Step10 Step14 

Day18:

      Review : Step4 Step11 Step15 

Day19:

      Review : Step5 Step12 

Day20:

      Review : Step6 Step13 

Day21:

      Review : Step7 Step14 

Day22:

      Review : Step8 Step15 

Day23:

      Review : Step9 

Day24:

      Review : Step10 

Day25:

      Review : Step11 

Day26:

      Review : Step12 

Day27:

      Review : Step13 

Day28:

      Review : Step14 

Day29:

      Review : Step15 

Day30:

      Review : Step1 

Day31:

      Review : Step2 

Day32:

      Review : Step3 

Day33:

      Review : Step4 

Day34:

      Review : Step5 

Day35:

      Review : Step6 

Day36:

      Review : Step7 

Day37:

      Review : Step8 

Day38:

      Review : Step9 

Day39:

      Review : Step10 

Day40:

      Review : Step11 

Day41:

      Review : Step12 

Day42:

      Review : Step13 

Day43:

      Review : Step14 

Day44:

      Review : Step15 


转载于:https://my.oschina.net/u/1381696/blog/479308

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值