今天面试了一家公司,面试的Java初级开发,实习的岗位。面试题也都挺简单的,给了四道题,让我挑一道做。我就选了第一道:
输入一串数字,输出其大写金额,
如:123
输出:壹佰贰拾叁整

之前一直在搞自己的服务器,外加一个月没碰java了,在准备考公务员,面试的时候突然发现自己啥都忘了,差点连最基础的Scanner都写不出了。

现在回来我好好写一下这个代码,当时在哪里只写到了万位以后的

让我们来先分析一下

输出大写金额,这个第一个想到的就是switch-case

然后就是数位,举个例子123
我们要输出壹佰贰拾叁,那就要从左到右,先是壹,百位,二,十位,三,整
这就需要我们判断一次数字在判断一下数位,
再来个例子,10000和10086
我们这次要输出壹万整 和 壹万零捌拾陆整
这个逻辑就是我们要判断 :
if(前一个数字是否为零&&当前数字不为零){
输出(“零”+数字+数位)
}
输出数字;
输出数位;

下面我们代码实现这个逻辑

 /*** 输入一串数字,输出大写金额,如123 输出壹佰贰拾叁整。* * @param args*/public static void main(String[] args) {Scanner input = new Scanner(System.in);System.out.println("请输入一串数字");String num = input.nextLine();// for循环中尽量不要用String +=的方式拼接,可以用StringBuilderboolean perviousIsZero = false;StringBuilder stringBuilder = new StringBuilder();for (int i = 0; i < num.length(); i++) {int a = num.charAt(i);// 判断当前是否为零if (a == 48) {perviousIsZero = true;continue;}// 判断数字前一个是否是零且当前数字不为零if (perviousIsZero) {if (a != 48) {stringBuilder.append("零");perviousIsZero = false;} else {// 都是零就跳过continue;}}// 获取数字大写stringBuilder.append(getUpperCase(a));// 获取数位stringBuilder.append(getDigitPlace(num.length() - i));}System.out.println(stringBuilder.toString() + "整");}/*** 获取数位* * @param i* @return*/private static String getDigitPlace(int i) {switch (i) {case 2:case 6:case 10:return "拾";case 3:case 7:case 11:return "佰";case 4:case 8:case 12:return "仟";case 5:case 13:return "万";case 9:return "亿";default:return "";}}/*** 输出数字的大写* * @param a* @return*/private static String getUpperCase(int a) {switch (a) {case 49:return "壹";case 50:return "贰";case 51:return "叁";case 52:return "肆";case 53:return "伍";case 54:return "陆";case 55:return "柒";case 56:return "捌";case 57:return "玖";default:return "";}}

我们运行一下看看

输出都正常,那我们看看长一点的

这里十万亿位出现了错误,是因为我们switch case只写到了第13位数,超出
了我们默认就没有数位了。所以这里还有地方可以优化。


这里单位有问题,不应该用万亿这个单位,千亿后面就是兆了,所以一般差不多计算到千亿就可以了,再往后就没太大意义了

其实做这个题的时候发生了两件挺尴尬的事情,我第一眼看到这个题的时候,我还以为只是要把数字转成大写形式,没注意是要有数位,还对面试官说这第一题太简单,我可以把顺便第一道做了后再做一道题(本来是四选一的题)。

结果发现自己眼瞎,其实逻辑还是要想一想的,外加一个月没碰java(之前都在搞自己的服务器和 搞数据清洗)我差点连Scanner都忘记怎么写了,还好面试官当时有事离开了一会,我在这一行Scanner这就卡了几分钟。后来面试官到时间了过来看了看我,发现我还没写好,我当时真的尴尬到头晕,没开玩笑,是真的头晕了,看代码都在晃的那种。

总结了下,现在发现自己的基础真的差呀,这最基本的都能忘记。现在还是在把基础多练练,不然都生疏了。

java面试题,输入一串数字,输出大写金额,如123 输出壹佰贰拾叁整。相关推荐

  1. java取出字符串中的后四位_[原]Java面试题-将字符串中数字提取出来排序后输出...

    [Title][原]Java面试题-将字符串中数字提取出来排序后输出 [Date]2013-09-15 [Abstract]很简单的面试题,要求现场在纸上写出来. [Keywords]面试.Java. ...

  2. 将数字字符串转换为人民币大写,壹、贰、叁、肆、伍、陆、柒、捌、玖、拾

    将数字字符串转换为人民币大写,壹.贰.叁.肆.伍.陆.柒.捌.玖.拾 ''' 将数字字符串转成大写字符串 ''' a="零.壹.贰.叁.肆.伍.陆.柒.捌.玖.拾" b=" ...

  3. Java初学者作业——输入一个五位数字,计算各位数字之和并输出,运行结果为五个数字之和(实践2)

    返回本章节 返回作业目录 需求说明: 编写Java程序,输入一个五位数字,计算各位数字之和并输出,运行结果为五个数字之和. 实现思路: (1)声明变量num,用于存储用户输入的数字. (2)通过Sca ...

  4. ACMNO.21 C语言-逆序输出 输入10个数字,然后逆序输出。 输入 十个整数 输出 逆序输出,空格分开 样例输入 1 2 3 4 5 6 7 8 9 0

    题目描述 输入10个数字,然后逆序输出. 输入 十个整数 输出 逆序输出,空格分开 样例输入 1 2 3 4 5 6 7 8 9 0 样例输出 0 9 8 7 6 5 4 3 2 1 提示 数组?堆栈 ...

  5. [YTU]_1046 ( 输入10个数字,然后逆序输出)

    Description 输入10个数字,然后逆序输出. Input 十个整数 Output 逆序输出,空格分开 Sample Input 1 2 3 4 5 6 7 8 9 0 Sample Outp ...

  6. Martix工作室考核题 —— 输入一串数字,按要求打印。

    题目 输入一串数字,按要求打印,例: 输入 打印 1 ¥1.00 12 ¥12.00 123 ¥123.00 1234 ¥1,234.00 12345 ¥12,345.00 123456 ¥123,4 ...

  7. Execl中正确输入长串数字的方法

    当我们在Excel中输入长串数字有时候会出现一些这样的问题,比如输入身份证号码或者序列号,只要序列号超过15位,输入的结果就以科学计数法表示. 下面介绍两种方法,可以在Excel中能够以普通方式正常显 ...

  8. 输入10个数字,然后逆序输出。

    题目描述 输入10个数字,然后逆序输出. 输入 十个整数 输出 逆序输出,空格分开 样例输入 1 2 3 4 5 6 7 8 9 0 样例输出 0 9 8 7 6 5 4 3 2 1 #include ...

  9. shell 输入一串数字判断是否是手机号码

    [root@localhost ~]# cat phone.sh #!/bin/bash echo "输入一串数字判断是否是手机号码" read -ep "" ...

最新文章

  1. 文明,在于传承,而不在于遗忘。
  2. Gnu/Linux 链接XServer方法
  3. HTML5 网站大观:12个优秀的 HTML5 黑色风格网站设计
  4. html ace编辑器,Tiny-editor
  5. java二分查找法视频_078-二分查找算法思路图解
  6. poj 2409 Let it Bead Polya计数
  7. Redis 3.2.x版本 redis.conf 的配置文件参数详解
  8. 计算机total函数,以一敌十的SUBTOTAL函数,你不会用就太可惜了!
  9. PCB Layout总结
  10. JAVA 中字符串的长度
  11. 读《乔布斯的魔力演讲》
  12. signature=3d7534face990de7e25e7438440abe49,Designing the User Interface 5e
  13. 360度全景图片怎么拍摄?
  14. 重庆计算机专业在职研究生,重庆师范大学在职研究生计算机专业教学方式
  15. 迪士尼照片_迪士尼经典游戏,《狂热》和更多Linux游戏新闻
  16. Windows 下设置自定义域名解析到指定 IP
  17. 如何做好项目管理任务分配
  18. 百度地图POI数据获取
  19. 日常学习——记使用POI多线程写Excel数据(续)
  20. 中华英才网或被全盘收购:三年对赌将近大限

热门文章

  1. 安卓内存使用情况监控,剖析Android开发未来的出路在哪里,薪资翻倍
  2. Win10杀死进程方式
  3. 石英晶振应该如何存放,标准有哪些?
  4. 瑞数FSSBBIl1UgzbN7N443T分析
  5. 自行车改装电动车怎么样_电动车听起来应该是什么样?
  6. 显示行数 设置ssh终端_mac下终端iTerm2配置
  7. chrome开发者工具使用
  8. 语音识别—实现百度语音识别
  9. Android传感器的使用开发、简易指南针
  10. 四、TCP中的流量控制和拥塞控制