A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© hhmm665544 中级黑马   /  2014-4-15 17:31  /  1150 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. private static String getDecimal(String strNum) {
  2.                  // 判断是否包含小数点
  3.         if (strNum.indexOf(".") == -1) {
  4.             return "";
  5.         }
  6.         strNum = strNum.substring(strNum.indexOf(".") + 1);
  7.         // 反转字符串
  8.         String num = new StringBuffer(strNum).reverse().toString();
  9.         // 创建一个StringBuffer对象
  10.         StringBuffer temp = new StringBuffer();
  11.         // 加入单位
  12.         for (int i = 0; i < num.length(); i++) {
  13.             temp.append(STR_UNIT2[i]);
  14.             temp.append(STR_NUMBER[num.charAt(i) - 48]);
  15.         }
  16.         num = temp.reverse().toString(); // 替换字符串的字符
  17.         num = numReplace(num, "零角", "零"); // 替换字符串的字符
  18.         num = numReplace(num, "零分", "零"); // 替换字符串的字符
  19.         num = numReplace(num, "零厘", "零"); // 替换字符串的字符
  20.         num = numReplace(num, "零零", "零"); // 替换字符串的字符
  21.         // 如果字符串以零结尾将其除去
  22.         while(num.lastIndexOf("零") == num.length() - 1) {
  23.             num = num.substring(0, num.length() - 1);
  24.         }
  25.         return num;
  26.         }
复制代码

评分

参与人数 1技术分 +1 收起 理由
枫儿 + 1 神马都是浮云

查看全部评分

2 个回复

倒序浏览
小数部分与整数部分是不一样的。
整数部分最高位的单位不确定,需要反转,从最低位,即元、拾、百、、、、方式进行读取和添加单位;
但小数部分,则是最低位可能不确定,不需要反转,直接按角、分、厘。。。进行转换,并且单位要后添加。
这是Java开发实战1200例的题目吧?
我是这样弄的:
  1.         private static String getDecimal(String num) {
  2.                 // TODO Auto-generated method stub
  3.                
  4.                 String[] STR_UNIT = {"角", "分", "厘"};
  5.                
  6.                 String[] STR_NUMBER = {"零", "壹", "贰", "叁", "肆",
  7.                                                "伍", "陆","柒", "捌", "玖"};
  8.                
  9.                 if( num.indexOf(".") != -1 ){
  10.                         num = num.substring( num.indexOf(".") + 1, num.length());
  11.                 }else{
  12.                         return "";
  13.                 }

  14.                 num = new StringBuilder(num).toString();
  15.                 StringBuilder temp = new StringBuilder();
  16.                 for( int i = 0; i < num.length(); i ++ ){
  17.                         temp.append( STR_NUMBER[ num.charAt(i) - 48 ]);       
  18.                         temp.append( STR_UNIT[ i ]);               
  19.                 }
  20.                 num = temp.toString();
  21.                 num = num.replace( "零角", "零" );
  22.                 num = num.replace( "零分", "零" );
  23.                 num = num.replace( "零厘", "零" );
  24.                 if( num.lastIndexOf("零") == num.length() - 1){
  25.                         num = num.substring(0, num.length() - 1);
  26.                 }
  27.                 return num;
  28.         }
复制代码

评分

参与人数 1技术分 +1 收起 理由
菜小徐 + 1

查看全部评分

回复 使用道具 举报
谢谢,我懂了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马