• JAVA将数字钱数转换为大写


    1.Java文件的编写

    package com.cwai.xtag;

    import java.util.Scanner;

    public class Num2Rmb {
      private String[] hanArr = {"零" , "壹" , "贰" , "叁" , "肆" ,
      "伍" , "陆" , "柒" , "捌" , "玖"};
      private String[] unitArr = {"十" , "百" , "千","万","十万","百万","千万","亿","十","百","千","万","千万","亿"};
      private String[] unitArr1 = {"分" , "角"};
      /**
      * 把一个浮点数分解成整数部分和小数部分字符串
      * @param num 需要被分解的浮点数
      * @return 分解出来的整数部分和小数部分。第一个数组元素是整数部分,第二个数组元素是小数部分。
      */
      public String[] divide(double num) {
        // 将一个浮点数强制类型转换为long,即得到它的整数部分
        int zheng = (int)num;
        // 浮点数减去整数部分,得到小数部分,小数部分乘以100后再取整得到2位小数
        int xiao = (int) Math.round((num - zheng) * 100);
        // 下面用了2种方法把整数转换为字符串
        //System.out.println("divide:"+new String[]{zheng + "", String.valueOf(xiao)});
        return new String[]{zheng + "", String.valueOf(xiao)};  }   public int[] toNum(double    int num1 = (int)num; 

        Integer zheng = (Integer)num1;
        //String s1 = zheng.toString();
        //Integer numk1 = (int) (zheng%10000);//取整数的底四位
        String s1 = zheng.toString();
        int numLen1 = s1.length();
        int[] numarry = new int[numLen1];
        for(int i=0;i<numLen1;i++) {
          numarry[i] = s1.charAt(i) - 48;

          //numarry[0][i]=numarry1[i];
          System.out.println(i+":"+numarry[i]);
        }
        return numarry;
      }
      /**
      * 把一个四位的数字字符串变成汉字字符串
      * @param numStr 需要被转换的四位的数字字符串
      * @return 四位的数字字符串被转换成的汉字字符串。
      */
      public String toHanStr(int[] numarry) {
        String result = "";
        int numLen = numarry.length;
        // 依次遍历数字字符串的每一位数字
        for (int i = 0 ; i < numLen ; i++ ) {
          // 把char型数字转换成的int型数字,因为它们的ASCII码值恰好相差48
          // 因此把char型数字减去48得到int型数字,例如'4'被转换成4。
          // int num = numarry.charAt(i) - 48;
          // 如果不是最后一位数字,而且数字不是零,则需要添加单位(千、百、十)
          if ( i != numLen - 1&& numarry[i]!= 0 ) {
            result += hanArr[numarry[i]] + unitArr[numLen - 2 - i];
          } else if (i>0 )

          {
            if ((numarry[i]==0)&&(numarry[i-1]==0) ) {
            //result +="";
            }
          } else if(i == numLen - 1&& numarry[i]== 0 ) {

          }
          // 否则不要添加单位
          else {
            result += hanArr[numarry[i]];
          }
        }
        //System.out.println("result:"+result+hanArr[numarry[numLen-1]]);
        return result+hanArr[numarry[numLen-1]];
      }


      public String toHanStr1(String numStr) {
        String result = "";
        int numLen = numStr.length();
        // 依次遍历数字字符串的每一位数字
        for (int i = 0 ; i < numLen ; i++ )
        {
          // 把char型数字转换成的int型数字,因为它们的ASCII码值恰好相差48
          // 因此把char型数字减去48得到int型数字,例如'4'被转换成4。
          int num = numStr.charAt(i) - 48;
          // 如果不是最后一位数字,而且数字不是零,则需要添加单位(千、百、十)
          if ( i != numLen - 1 && num != 0)
          {
            result += hanArr[num] + unitArr1[numLen - 1 - i];
          }
          // 否则不要添加单位
          else
          {
            result += hanArr[num];
          }
        }
        return result+"分";
      }

      public static void main(String[] args) {
        System.out.println("请输入要转换的钱数:");
        @SuppressWarnings("resource")
        Scanner in = new Scanner(System.in);
        Double inmun = in.nextDouble();
        Num2Rmb nr = new Num2Rmb();
        // 测试把一个浮点数分解成整数部分和小数部分
        //System.out.println(Arrays.toString(nr.divide(236711125.123)));
        // 测试把一个四位的数字字符串变成汉字字符串
        System.out.print(nr.toHanStr(nr.toNum(inmun))+"圆");
        System.out.print(nr.toHanStr1(nr.divide(inmun)[1]));
        //System.out.println(nr.toHanStr("100"));
      }

    }

    2.JSP内容编写

      <tr>
        <td class="GridHeader" colspan="4" align="right" >
        合计(大写)<font color="red">*</font>:
        </td>
        <td class="GridHeader" colspan="7">
          <input id="CLHZHJ" name="CLHZHJ" onclick="total_hjdx('<%= (xcapList.size()>0) ? xcapList.size():1 %>')" style="100%;text-align: center;" value="  <%=XDataConvert.TryToString(xg_Map.get("CLHZHJ")) %>"/>
          <input type="hidden" id="CLHZHJ_NUM" name="CLHZHJ_NUM" value="<%=XDataConvert.TryToDouble(xg_Map.get("CLHZHJ_NUM")) %>"/>
        </td>
      </tr>

      

      //JS内容

      

      function total_hjdx(btn){ //计算合计总钱数
        var tot = 0;
        var jt;
        for(var i=1;i <= btn;i++){//从html中获取钱数并相加
          var n1 = document.getElementById("hj_"+i).value;
          if( "" != n1){
            jt = parseFloat(n1);
            tot += jt;
          }
        }
        
        document.getElementById("CLHZHJ_NUM").value = tot.toString();//存储总钱数(数字)
        var str = ajaxGetData("NUM2RMB",(tot.toString() != "0")?(tot.toString()):"");//利用aJax获取汉字大写钱数(从3中获取大写钱数)
        document.getElementById("CLHZHJ").value = (str).toString();//将获取的大写钱数赋值给显示的<input>框
      }

     

    3.aJax

    <%@page import="com.cwai.xtag.Num2Rmb"%>     //必不可少

    …… 

    <%

    String req_L = request.getParameter("l")==null?"":request.getParameter("l").trim().toUpperCase();
    String req_V = request.getParameter("v")==null?"":request.getParameter("v");
    xGL_YHXX yh = xGL_YHXX.xGetCurrentUser(request);
    DataManipulation dataManipulation = (DataManipulation) ApplicationContext.getContext().getBean("dataManipulation");
    //登陆超时是否能够查询,具体的类别req_L判断后控制

    BaseDAO dao = null;
    try{
      dao = new BaseDAO();
      if(yh == null){//登陆超时,不必执行查询以节省资源
        out.print("0");
        return;
      }
      if("".equals(req_L)){//类型为空,不必执行查询直接返回
        out.print("0");
        return;
      }

     

      ……

      }else if("NUM2RMB".equals(req_L)){//数字转人民币
        if("".equals(req_V)){
          out.print("");
          return;
        }else{
          //System.out.println(req_V);
          Num2Rmb nr = new Num2Rmb();
          Double req = Double.parseDouble(req_V);
          String str1 = nr.toHanStr(nr.toNum(req))+"圆";
          String str2 = nr.toHanStr1(nr.divide(req)[1]);
          out.print(str1+str2);
          return;
        }
      }else if("JJRSZ".equals(req_L)){

      ……

    }catch(Exception e){
      out.print("0");
      System.out.println("getdata异常:类型 req_L:["+req_L+"] , req_V:["+req_V+"]");
      e.printStackTrace();
    }finally{
      if(dao != null) {
        dao.closeConn();
      }
    }
    %>

  • 相关阅读:
    回顾:异常处理,值传递和引用传递
    回顾:静态变量和实例变量、构造器
    多态、抽象类与接口
    回顾:面向对象、基本类型
    总结一下《深入理解Java虚拟机》
    百度实习生面试题
    面试题
    阿里面试
    Shell
    Collector详解
  • 原文地址:https://www.cnblogs.com/Stir-friedEggplant/p/7929358.html
Copyright © 2020-2023  润新知