【ThoughtWorks】面试题目“收银机”的Java实现

昨天收到常Sir发来的【ThoughtWorks代码题目】,觉得挺有意思,就拾起了好久不用的Java,实现了题目要求。我这代码渣二把刀还是感觉用js实现要方便一些,抽空去实现一下(希望不是在立flag… o(╯□╰)o)。。

题目的地址是:

【ThoughtWorks代码题目】

我的实现方法是: CashRegister[github]

题目说简单一些就是需要实现一个收银模块,输入的是购物清单的JSON数据,需要通过处理输出规定的购物结算信息。

JSON数据的范例为:

1
2
3
4
5
6
7
8
9
10
11
[
'ITEM000001',
'ITEM000001',
'ITEM000001',
'ITEM000001',
'ITEM000001',
'ITEM000003-2',
'ITEM000005',
'ITEM000005',
'ITEM000005'
]

“ITEM00003”表示商品的条码号,一个商品对应一个条码号。“-”后面的数字表示商品个数。

拿到这个题目,第一反应是想起了以前本科时候的老本行,大概通过PHP+MySQL很快就可以搞定。最近在帮老板写关于Android的教材,于是决定先通过Java来实现。

思路

  • 首先将JSON数据转换为字符串,方便处理;
  • 检验数据格式是否正确;
  • 将每一个条码提取并统计条码对应出现次数,也就是商品购买数量;
  • 将上一步分析结果与商品库进行匹配,找出商品其他信息;
  • 对信息针对不同的优惠方式进行处理并计算费用,记录优惠数据;
  • 得出计算结果,打印小票。

虽然实现了功能,但是感觉整体代码结构并不是很好,希望有空整理并进行优化。

0%