`
yaoweinan
  • 浏览: 132668 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

转化十亿以内的人民币数字为大写格式

阅读更多

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;


public class RMBUpper {
 private final String []dws=new String[]{"","拾","佰","仟","万","拾万","佰万","仟万","亿","拾亿","佰亿","仟亿"};
 private final String []szs=new String[]{"零","壹","贰","叁","肆","伍","陆","柒","捌","镹"};
 private String qs;
 private String result="";
 /**
  * 功能:转化十亿以内的人民币数字为大写格式
  * @param args
  */
 public static void main(String[] args) {
  BufferedReader in
     = new BufferedReader(new InputStreamReader(System.in));
  String r="0";
  do{
   System.out.println("请输入要转换为大写的十亿以内的正整数:");
   try {
    r=in.readLine();
    r=Integer.parseInt(r)+"";
   } catch (IOException e) {
    e.printStackTrace();
   }
  }
  while(!(Integer.parseInt(r)>0&&Integer.parseInt(r)<1000000000));
  RMBUpper rmb=new RMBUpper(r+"");
  System.out.println(rmb.getUpper());
 }
 public String getUpper() {
  // TODO 获得输入的大写形式
  this.com();
  return this.result;
 }
 private void com() {
  // TODO 开始计算
  this.turnNumNotZero();
  this.deleteTooMuchZero();
  this.turnZero();
  
 }
 private void turnZero() {
  // TODO 将0转换为零
  if(this.result.lastIndexOf("0")==this.result.length()-1){//处理最后是零的情况
   this.result=this.result.substring(0,this.result.length()-1);
  }
  this.result=this.result.replaceAll("0", this.szs[0]);
 }
 private void deleteTooMuchZero() {
  // TODO 删除多余的零
  if(this.result.indexOf("00")==-1)return;
  this.result=this.result.replace("00", "0");
  this.deleteTooMuchZero();
 }
 private void turnNumNotZero() {
  // TODO 将非零数字转换为大写
  for(int i=0;i<this.qs.length();i++){
   int index=Integer.parseInt(this.qs.charAt(i)+"");
   if(index!=0){
    this.result+=this.szs[index]+this.dws[this.qs.length()-i-1];
   }else{
    this.result+="0";
   }
  }
 }
 public RMBUpper(String qs) {
  this.qs = qs;
 }

}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics