大二是老师让做一个综合试验::用C++实现简易银行系统,其中用到在打印流水账时要求把金额转换为人民币大写...当时傻里吧唧的,,,随便拷贝了个同学的应付老师交了了事...前一段一个大二的弟兄向我提起银行程序..问起金额转换,起初心想要处理零零等问题麻烦,结果一个同学说四位,四位处理,OK..豁然开朗,顺利完工
         
/**
*@author sunpander
*time: 08-12-11 19:16
* 把输入的数字转换成人民币大写的形式
*/


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



public class ChangeNumToRMB {

  String moneyStrs[]={ "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};
   public static void main(String[] args) {
     // TODO Auto-generated method stub
     boolean isDebug = true;
     while(isDebug)    
     {
     int num =0;
    String changedStr ="";
    System.out.println( "请输入需要转换的金额:");
    BufferedReader br = new BufferedReader( new InputStreamReader(System.in));
     boolean isWrongInput = true;
     while(isWrongInput)
    {
       try {
        String str =    br.readLine();
    
        num = Integer.parseInt(str);
            
            
      } catch (Exception e) {
        System.out.println( "输入数字有误,必须是:0"+ "到"+Integer.MAX_VALUE+ " 的整数");
        
         // TODO Auto-generated catch block
         //e.printStackTrace();
        isWrongInput = true;
         continue;
      }
      isWrongInput = false;
    }
         ChangeNumToRMB chan = new ChangeNumToRMB();
         changedStr=chan.getChangedString(num);
                }
  }

   public String getChangedString( int num)
  {
    
     //Money用于存放输入的金额数
     int moneyNum=num;
    String moneyStr="";
    System.out.println( "输入的钱数是:");
     if(moneyNum<0)
    {
      System.out.println( "数字必须大于零");
    }
     else if(moneyNum==0)
    {
      moneyStr = "零元";
    }
     //只有四位数,即最大9999.小于10000
     else if(moneyNum<10000)
    {
            moneyStr = this.getFourNumStr(moneyNum)+ "元";
    }
     //大于一万,小于一千万
     else if(moneyNum<=10000000) // && moneyNum>10000)
    {
        
       int firstFourNum,lastFourNum;
      firstFourNum     =moneyNum/10000;
      lastFourNum        =moneyNum%10000;    
      String firstFourStr = this.getFourNumStr(firstFourNum);
      String lastFourStr    = this.getFourNumStr(lastFourNum);
       if(!lastFourStr.contains( "仟"))
        lastFourStr= "零"+lastFourStr;
      moneyStr=firstFourStr+ "万"+lastFourStr+ "元";        
    }
     //大于一千万.即上亿但小于最大整数
     else if(moneyNum<Integer.MAX_VALUE) //&& moneyNum>10000000)
    {
       int firstFourNum,secondFourNum,lastFourNum;
      firstFourNum     =moneyNum/100000000;
      secondFourNum    =(moneyNum/10000)%1000;
      lastFourNum        =moneyNum%10000;    
      String firstFourStr = this.getFourNumStr(firstFourNum);
      String secondFourStr = this.getFourNumStr(secondFourNum);
      String lastFourStr    = this.getFourNumStr(lastFourNum);
       if(!lastFourStr.contains( "仟"))
        lastFourStr= "零"+lastFourStr;
       if(!secondFourStr.contains( "仟"))
        secondFourStr= "零"+secondFourStr ;
      moneyStr=firstFourStr+ "亿"+secondFourStr+ "万"+lastFourStr+ "元";    
    }
     else
      System.out.println( "someting    is wrong");
    System.out.println(moneyStr);                
     return moneyStr;                                                            
  }

   public String getFourNumStr( int fourNum)
  {
     int qian,bai,shi,ge;
    ge     =fourNum%10;
    shi    =(fourNum%100 )/10;
    bai    = (fourNum%1000)/100;
    qian = fourNum/1000;        
    String strTemp="";
     if(qian!=0)
    {
        
      strTemp=strTemp.concat(moneyStrs[qian]+ "仟");
      strTemp=strTemp.concat(moneyStrs[bai]+ "佰");
      strTemp=strTemp.concat(moneyStrs[shi]+ "什");
      strTemp=strTemp.concat(moneyStrs[ge]);
            
        strTemp=strTemp.replace( "零佰", "零");    
        strTemp=strTemp.replace( "零什", "零");    
        strTemp=strTemp.replace( "零零", "零");    
         strTemp=strTemp.replace( "零零", "零");
        
         if(strTemp.endsWith( "零"))
                strTemp = strTemp.substring(0, strTemp.length()-1);
    }
     else if(bai!=0)
    {
      strTemp=strTemp.concat(moneyStrs[bai]+ "佰");
      strTemp=strTemp.concat(moneyStrs[shi]+ "什");
      strTemp=strTemp.concat(moneyStrs[ge]);
    
        strTemp=strTemp.replace( "零什", "零");    
        strTemp=strTemp.replace( "零零", "零");    
            
         if(strTemp.endsWith( "零"))
              strTemp = strTemp.substring(0, strTemp.length()-1);
    }
     else if(shi!=0)
    {
        
      strTemp=strTemp.concat(moneyStrs[shi]+ "什");
      strTemp=strTemp.concat(moneyStrs[ge] );
    
         if(strTemp.endsWith( "零"))
                strTemp = strTemp.substring(0, strTemp.length()-1);        
    }
     else
      strTemp.concat(moneyStrs[ge]);
     return strTemp;
  }
}
今天上午快十点起来,抄了几份试验报告,下午自习看了云风的<游戏之旅--我的编程感悟>..晚上团契祷告会,我刚回来,,今天就把前2天的个程序发布下吧!!
           还有个问题处理小数点..按说找到小数点位置在分割开处理就可以啦,.没弄.弄了在发布吧!!现在不想编程,,,想随便转转,看看云风去!!!!(决定以后只要看本专业相关的书,不管受益多少,都要总结下)今下午的当然不例外哈!!!