- 浏览: 1437436 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (409)
- Java (48)
- Spring (29)
- struts2 (17)
- hibernate (4)
- 设计模式 (24)
- jbpm (1)
- JavaScript (5)
- 统计报表 (7)
- ExtJS_3.0 (35)
- struts1 (1)
- 分析设计 (3)
- Flex3 (24)
- UML (2)
- 数据库 (18)
- PowerDesigner (2)
- 应用服务器 (3)
- WebService (5)
- ActiveMQ_5.3.2 (6)
- Java通信技术 (11)
- GWT (6)
- OSGi (15)
- android (11)
- liferay6.0.6 (13)
- jquery (13)
- Linux (3)
- java.util.concurrent (16)
- guava (9)
- 开发模式 (1)
- 大数据 (2)
- 互联网金融 (4)
- treegrid-3.0 (7)
- 分布式 (8)
- GO语言 (4)
- maven (1)
- 缓存技术 (6)
- 其他 (2)
- 前端页面 (1)
- heasy (1)
- spring cloud(F版) (21)
- springboot (12)
- springmvc (5)
- mybatis (3)
- dubbo (1)
- 物联网 (0)
最新评论
-
raymond.chen:
谢谢您的分享
使用Ngrok解决通过外网访问内网web应用 -
wangyudong:
速度有点慢,不过在也找到了一个开源的holer,配置一个key ...
使用Ngrok解决通过外网访问内网web应用 -
a1006458222:
...
Axis2的部署和应用 -
偷师来了:
不好意思 这样的博客我觉得就灭有必要分享出来了 命令大家都会看 ...
Consul框架介绍 -
lliiqiang:
怎么直接删除文件夹啊?固定的几个文件可以删除,不固定的呢?需要 ...
Flex AIR —— 文件读写
表达式抽象类:
public abstract class Expression { protected String[] chineseFigures = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"}; //中文数字 public void interpret(Context ctx){ if(ctx.hasNextFigure()){ int d = Integer.parseInt(ctx.nextFigure()); //阿拉伯数字 String chineseFigure = chineseFigures[d]; //中文数字 ctx.beforeAppend(chineseFigure + getSuffix()); if(ctx.hasNextFigure()){ parseNext(ctx); } } } protected abstract void parseNext(Context ctx); public abstract String getSuffix(); }
个位数解析类:
public class OneExpression extends Expression { private Expression next = null; @Override protected void parseNext(Context ctx) { next = new ShiExpression(); next.interpret(ctx); } @Override public String getSuffix() { return ""; } }
十位数解析类:
public class ShiExpression extends Expression { private Expression next = null; @Override protected void parseNext(Context ctx) { next = new BaiExpression(); next.interpret(ctx); } @Override public String getSuffix() { return "拾"; } }
其它位数的解析类请看附件!
Context类:
public class Context { private String input; private String output = ""; private int inputLength = 0; private int figurePosition = 0; private int limitLength = 12; public Context(String s){ this.input = (s==null) ? "" : s.trim(); this.inputLength = (input==null) ? 0 : input.length(); if(inputLength > limitLength) throw new RuntimeException("只支持到"+limitLength+"位长度的数值!"); } public void beforeAppend(String s){ output = s + output; } public boolean hasNextFigure(){ return figurePosition<inputLength; } public String nextFigure(){ figurePosition++; String currentFigure = String.valueOf(input.charAt(inputLength - figurePosition)); return currentFigure; } private void optimize(){ if(output.length()>0 && output.equals("零")==false){ while(output.endsWith("零")){ output = output.substring(0, output.length()-1); } output = output.replaceAll("零拾", "零"); output = output.replaceAll("零佰", "零"); output = output.replaceAll("零仟", "零"); output = output.replaceAll("零萬", "萬"); output = output.replaceAll("零亿", "亿"); while(output.indexOf("零零")>0){ output = output.replaceAll("零零", "零"); } output = output.replaceAll("零萬", "萬"); output = output.replaceAll("零亿", "亿"); output = output.replaceAll("亿萬", "亿"); while(output.endsWith("零")){ output = output.substring(0, output.length()-1); } if(output.equals("壹拾")) output = "拾"; } output += "元"; } public String getOutput(){ optimize(); return output; } }
测试类:
public class Test { public static void main(String[] args) { Context ctx = new Context("9876543210"); Expression root = new OneExpression(); root.interpret(ctx); System.out.println(ctx.getOutput()); } }
- interpreter.rar (4.5 KB)
- 下载次数: 28
发表评论
-
设计模式概述
2015-10-11 00:17 879设计模式(Design pattern ... -
备忘录模式(Memento Pattern)
2010-04-10 22:58 1393在不破坏封装的前提下,捕获并且保持一个对象的内部状态,这样可以 ... -
中介者模式(Mediator Pattern)
2010-04-10 17:45 2040定义一个对象封装一系列的对象交互,使得对象之间不需要显式地相互 ... -
迭代器模式(Iterator Pattern)
2010-04-01 21:36 2414提供一种方法访问一个容器(container)对象中各个元素, ... -
解析器模式(Interpreter Pattern)
2010-03-30 21:29 2031定义语言的文法,并且建立一个解释器来解释该语言中的句子。 ... -
命令模式(Command Pattern)
2010-03-29 21:34 1687命令模式本质是对命令的封装,从而把发出命令的责任和执行命令的责 ... -
责任链模式(Chain of Responsibility Pattern)
2010-03-28 11:28 1505责任链是用一系列类试图处理一个请求,这些类之间是一个松散的耦合 ... -
代理模式(Proxy Pattern)
2010-03-26 22:27 1519为其他对象提供一种 ... -
轻量级模式(Flyweight Pattern)
2010-03-25 23:47 1983轻量级模式实现对象的共享,从而减少内存分配的开销。该模式通常和 ... -
外观模式(Facade Pattern)
2010-03-25 22:39 1417外观模式,为子系统的一组接口提供一个统一的界面,此模式定义了 ... -
装饰模式(Decorator Pattern)
2010-01-28 23:50 2867动态给一个对象添加一些额外的职责。使用Decorator模式相 ... -
组合模式(Composite Pattern)
2010-01-26 22:22 4949组合模式主要是应对这样的问题:一类具有“容器特征”的对象 —— ... -
建造者模式(Builder Pattern)
2010-01-24 22:11 1396将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创 ... -
状态模式(State Pattern)
2010-01-11 20:29 1461一、状态模式需要两种类型实体参与: 1、状态管理器 ... -
桥接模式(Bridge Pattern)
2009-05-05 09:29 1385将抽象部分与实现部分分离,使得它们两部分可以独立地变化。 ... -
适配器模式(Adapter Pattern)
2009-04-10 13:08 1475将一个接口转换成为客户想要的另一个接口,适配器模式使接口不兼容 ... -
观察者模式(Observer Pattern)
2009-03-26 17:58 1536一、概念 定义对象间的一种一对多依赖关系,使得每当一 ... -
访问者模式(Visitor Pattern)
2009-03-23 16:21 1690一、概念 在不修改已有程序结构的前提下,通过添 ... -
策略模式(Strategy Pattern)
2009-03-18 15:21 1454策略模式的本质:少用继承,多用组合。 策略模式属于对象的行 ... -
设计模式应用范例(一):上行短信管理器
2009-03-17 18:19 2381Spring AOP的应用:在处理业务短信之前,可以 ...
相关推荐
在Java中,常见的设计模式有单例模式、工厂模式、观察者模式、装饰器模式和策略模式等。例如,单例模式确保一个类只有一个实例,而工厂模式则提供了一种创建对象的最佳方式,避免了直接new操作导致的耦合性。理解并...
Java编程模式与范例:基础开发技巧是针对Java开发者的一本深入学习指南,旨在提升开发者在实际编程中的技能和效率。这本书涵盖了多种重要的编程模式和最佳实践,为初学者和有经验的Java开发者提供了丰富的知识资源。...
《Java编程模式与范例:基础开发技巧》是一本深入探讨Java编程的著作,它涵盖了各种编程模式和实例,旨在帮助开发者提升技能并熟练掌握Java编程的基础技巧。在这个压缩包中,除了书籍的主文件外,还包含了辅助阅读...
Java中常见的设计模式有单例模式(Singleton)、工厂模式(Factory)、观察者模式(Observer)、装饰器模式(Decorator)和策略模式(Strategy)等。例如,单例模式保证了类只有一个实例,而工厂模式则提供了创建...
逆译在中国文化走出去以争夺更多话语权的过程中充当了主角,然而中外翻译史表明顺译来得自然,也...翻译团队在组建协作、适用翻译准则方面颇具成效,使得其译文较为准确、译语通俗易懂、译本相对纯正,堪称典籍顺译的范例。
经典范例:员工股权激励方案实施细则.doc
最新研究生思想汇报范例:对价值观认识
在这个"私有数据解析器_解析范例程序_protobuf_"中,我们将探讨如何使用protobuf进行数据解析,并通过范例程序进行深入理解。 protobuf的核心概念包括消息类型定义(.proto文件)、编译器(protoc)以及生成的代码...
**C# MVP模式范例解析** MVP(Model-View-Presenter)模式是一种软件设计模式,常用于构建用户界面,特别是在Windows Forms和ASP.NET应用程序中。这种模式将业务逻辑、数据处理和用户交互分离,提高了代码的可测试...
范例:职务分析调研报告样例岗位说明书模板.doc
ps范例:Photoshop打造晶莹剔透的水质感文字
### VB 金额汉字转大写函数解析 在财务软件开发中,经常需要将金额数字转换成汉字大写形式,以适应中国会计制度的要求。本文将详细介绍一个VB(Visual Basic)编写的金额数字转汉字大写的功能函数,并对其内部实现...
4. **行为型模式**:如策略模式、模板方法模式、观察者模式、责任链模式、命令模式、迭代器模式、访问者模式、备忘录模式、解释器模式等。这些模式关注于对象之间的交互和职责分配。 5. **Java编程范例**:书中会...
Android开发实战经典_030905_消息机制_C_范例:时钟显示视频教程.zip
范例:一家煤炭集团工作分析实施操作详细案例岗位说明书模板.doc
《LabVIEW 8.20从入门到精通》配书光盘范例:For循环.vi
[JAVA编程模式与范例][JAVA编程模式与范例][JAVA编程模式与范例][JAVA编程模式与范例][JAVA编程模式与范例][JAVA编程模式与范例][JAVA编程模式与范例][JAVA编程模式与范例][JAVA编程模式与范例][JAVA编程模式与范例]...