zoukankan      html  css  js  c++  java
  • 记录去大搜车的一道笔试题

         java编程题

      实现一个字符串数字转人民币的小功能

      入参:一个字符串,范围是0.00~999999.99,最多两位小数

      出参:对应的人民币大写或者验证不合法

      例子1:

      input:12345.67

      output:壹万贰仟叁佰肆拾伍元陆角柒分

      例子2:

      input:1000000

      output:输入值超出范围

      例子3

      input:133a055

      output:输入的值不是数字

    说明一下:当时我的思路是:

        (1)根据小数点分割,然后获取到小数点左边的整数位,和右边的小数位。

        (2)然后各自根据空格分割,获取到整数位数组和小数位数组。

        (3)整数位数组进行从右到左的遍历,这样可以拼接单位(如:元、拾、佰..)

        (4)小数位从左到右遍历,好处如(3)

        (5)在3、4遍历过程中需要把对应的数字转换成大写中文

    遗憾:当时整个思路是这样的,但是手写代码还是不如自己用电脑方便,易改。笔试过程中因为自己写的  例子2、例子3 不符规则的代码 写多了,把位置都占了,不得已说了一下我的思路。不过当时在第三步写的有一点问题。下面有我错误想法的代码。不过我认为整个的思路是没问题的。后来回家后自己电脑敲了一波(下面不符规则的代码就不写了)。

     1   public static String transfer(String num){
     2          num="12345.67";
     3 
     4         String[] chinese={"0,零","1,壹","2,贰","3,叁","4,肆","5,伍","6,陆","7,柒","8,捌","9,玖"};
     5         //此处根据小数点分割
     6         String[] str1= num.split("\.");
     7         //这里是根据空格拆分的整数数组
     8         String[] str2= str1[0].split("");
     9         //这里是根据空格拆分的小数数组
    10         String[] str3= str1[1].split("");
    11         //这里的c 是整数位用来累加遍历次数 以获取到 单位的(元,拾...)
    12         //
    13         int c=0;
    14         StringBuffer sb;
    15         StringBuffer newsb=new StringBuffer();
    16         for (int i = str2.length-1; i >=0 ; i--) {
    17             sb=new StringBuffer();
    18             //这里是获取int数字转换成中文数字
    19             for (int y=0;y<chinese.length;y++){
    20                 System.out.println(str2[i]);
    21                 if(chinese[y].startsWith(str2[i])){
    22                     System.out.println(chinese[y]);
    23                     sb.append(chinese[y].split(",")[1]);
    24                     break;
    25                 }
    26             }
    27 
    28             //这里当时的错误想法是这里,switch里面的是(str2[i]).
    29             // 笔试后面试官说这里有问题,但是后来已经面试完了,我才想起怎么去解决这个问题。大写的尴尬。。。
    30             switch (c){
    31                 case 0: sb.append("元");break;
    32                 case 1: sb.append("拾");break;
    33                 case 2: sb.append("佰");break;
    34                 case 3: sb.append("仟");break;
    35                 case 4: sb.append("万");break;
    36 //                case 5: sb.append("拾万");break;
    37 //                case 6: sb.append("百万");break;
    38             }
    39             //整数数组位 替换成数字+单位
    40             str2[i]=sb.toString();
    41             c++;
    42         }
    43         //这里需要把整数数组从左到右 进行拼接显示
    44         for (int i = 0; i < str2.length; i++) {
    45             newsb.append(str2[i]);
    46         }
    47 
    48         //小数位从左到右拼接
    49         for (int i =0; i < str3.length ; i++) {
    50             sb=new StringBuffer();
    51             for (int y=0;y<chinese.length;y++){
    52                 if(chinese[y].startsWith(str3[i])){
    53                     System.out.println(chinese[y]);
    54                     sb.append(chinese[y].split(",")[1]);
    55                     break;
    56                 }
    57             }
    58             switch (i){
    59                 case 0: sb.append("角") ;break;
    60                 case 1: sb.append("分");break;
    61             }
    62             //这里单纯是为了查看 其实可以省略此步骤
    63             str3[i]=sb.toString();
    64             newsb.append(str3[i]);
    65         }
    66 
    67         System.out.println(newsb.toString());
    68         return newsb.toString();
    69     }

    最后说一下整个面试:

      整个面试感觉说了很多,但是也有一部分没回答上来。问的东西很简单。之前看了很多jvm底层的东西,垃圾回收和垃圾收集器等,集合的底层和扩容等。

      感觉和第一个面试官唠了四五十分钟把。但是到了第二个面试官,上了就问我不是计算机专业的?我本身是土木工程的(本科),我实话实说。后来的唠嗑感觉面试官都快睡着了,感觉我说的东西他也没听多少。第二天 大搜车发来了邮件给我婉拒了。

      整个面试分析下来,两点:

      1、自己的有点知识掌握不牢靠、不全面、不深入。但是认为我跟计算机专业的毕业相同时间的人比 ,我不输很多。

      2、感觉自己输在了专业上,假如计算机专业毕业是加分项,我这不是的 不是零分而是负数。但是不能一直失落,要越挫越勇,再沉淀下,之后自己要用更多时间学习,来弥补专业问题。

       

  • 相关阅读:
    CentOS安装sctp协议
    视频编码未来简史
    Linux内核:分析coredump文件
    skb的两个函数pskb_copy和skb_copy
    《Linux内核设计与实现》读书笔记(十二)- 内存管理
    Linux内核学习笔记之seq_file接口创建可读写proc文件
    内核如何签名
    《女士品茶》与统计检验
    K近邻算法
    PCA原理分析
  • 原文地址:https://www.cnblogs.com/liran123/p/9381393.html
Copyright © 2011-2022 走看看