如何将数字转化为中文大写

时间:2020-11-25 06:55:03

今天去了面试,在笔试过程中,发现有一题很有趣,当时一直都没有思路,现在终于想通了,随便跟大家分享一下,顺便自己也当作笔记,不过这题对于大神来说,其实很简单!我是小白,如下写的哪里不好,请大神指点迷津!
    题目:请将数字转化为中文大写,例如352,转化后显示:叁百伍拾贰元.
    代码实现如下:
import java.util.Scanner;
public class changeIntToCN {
  /*
   * 项目内容:当输入数字时候,转换为大写的中文数字
   * 1.先定义数字以及交易符的中文标签
   * 2.分开处理数字
   * 3.整合输出
   *
   */
 private static final String[] NUMBER_CN= {"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
 private static final String[] MONEY_CN= {"元","拾","百","仟","万","拾","百","仟","亿"};
 private static final String[] POIINT_CN= {"分","角"};
 
 String head="";
 String end="";
 int newNum;
 String newNum1;
 //定义构造方法,这样其实可以省了一些代码
 public changeIntToCN(String num) {
  //把num号码进行处理
  //首先先要判断该号码是否有小数点,并把所穿进来的参数进行分割
  if(num.contains(".")) {
   int proint=num.indexOf(".");
   head=num.substring(0, proint);
   end=num.substring(proint+1);
   //判断一下后面的小数,并判断是否大约5.如果大约5.进1
   if(end.length()>2) {
    newNum=Integer.parseInt(end); //把数字转成字符串
    if(newNum%10>5) {      
     newNum+=10;
     newNum1=String.valueOf(newNum).substring(0, 2); //在把数字转成字符串 并截成2位
     end=newNum1;
    }
    else {
     end=end.substring(0,2);
    }
   }
  }else {
   head=num;
  }
  System.out.println("转化为大写字母后=====>"+getCN());
 }
 
 //定义一个方法用来遍历匹配相关的数据
 public String getCN() {
  StringBuffer sbBuffer=new StringBuffer(); //定义一个字符串缓冲区
  //首先处理头的数字
  for(int i=0;i<head.length();i++) {
   //把东西转进去缓冲区,而charAt的索引功效可以帮我们寻找在数组里面的下标,当然charAt也要稍作处理,把他变成整形 ,才能开启询标之旅哟 备注:charAt返回的是一个char类型
   sbBuffer.append(NUMBER_CN[getInt(head.charAt(i))]);
   sbBuffer.append(MONEY_CN[head.length()-1-i]);
  }
  //处理小数点后面的事情了
  for(int i=0;i<end.length();i++) {
    sbBuffer.append(NUMBER_CN[getInt(end.charAt(i))]);
    sbBuffer.append(POINY_CN[end.length()-1-i]);
   }
  
  
  return sbBuffer.toString();
  
 }
 public int getInt(char c) {
  String string=String.valueOf(c);
  return Integer.parseInt(string);
  
 }
 public static void main(String[] args) {
  Scanner input=new Scanner(System.in);
  System.out.println("请输入数字");
  String no=input.next();
  changeIntToCN changeIntToCN=new changeIntToCN(no);
 }
 
}