java自动编号_java实现自动编号系统(类似于word中自动编号)

功能需求:

1,根据章节和当前标题数量,获得下一个编号,满足不同等级编号需求.如同word中的自动编号功能一样

2,可以实现在freemarker中直接调用生成方法,得到正确的编号

目标:即在freemarker代码中通过一个方法调用即可得到当前章节的编号

1

1.1

1.2

2

2.1

2.1.1

2.1.2

2.2

2.2.1

3

3.1

3.1.1

3.1.1.1

3.2

思路:

1,编号整体上是树形结构,因此要用树来管理整个列表

2,有一个方法可以根据最大值,获取下一个(比如:最大值3,下一个4,最大值四,下一个五),这种增量方式是可以扩展和重新定义的.

3,章节间的分隔符是可以指定的,在定义过程中应该指定.

不多说,上代码:

public abstract class Number {

public abstract String produceNext(String crrnt);

public String rootNumber() {

return "0";

}

public String firstNumber() {

return "1";

}

}编号抽象类,定义编号的元素类(如1,2,3或一,二,三)

实现类:

public class SerialNumber extends Number {

@Override

public String produceNext(String crrnt) {

String next = "0";

if (crrnt != null) {

try {

int crrntNum = Integer.parseInt(crrnt);

next = String.valueOf(crrntNum + 1);

} catch (Exception e) {

System.err.println("非数字类型的字符串!");

}

}

return next;

}

}

节点类:

public class Node implements Comparable {

private String id;

private String number;

private String text;

private String parentId;

private int level;

public Node(String id, String number, String parentId, int level) {

this.id = id;

this.number = number;

this.parentId = parentId;

this.level = level;

}

public Node() {

}

public String getId() {

return id;

}

public void setId(String id) {

this.id = id;

}

public String getNumber() {

return number;

}

public void setNumber(String number) {

this.number = number;

}

public String getText() {

return text;

}

public void setText(String text) {

this.text = text;

}

public String getParentId() {

return parentId;

}

public void setParentId(String parentId) {

this.parentId = parentId;

}

public int getLevel() {

return level;

}

public void setLevel(int level) {

this.level = level;

}

@Override

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值