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="width: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();
  }
}
%>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM