import java.io.*;
class Text{public   static   String   numtochinese(String   input){   
        String   s1="零壹贰叁肆伍陆柒捌玖";   
        String   s2="仟佰拾亿仟佰拾万仟佰拾元";   
        String   s4="分角整元拾佰仟万拾佰仟亿拾佰仟";   
        String   s3="元角分";   
        String   temp="";   
        String   result="";   
        //if   (input==null)   return   "输入字串不是数字串只能包括以下字符('0'~'9','.'),输入字串最大只能精确到仟亿,小数点只能两位!";   
        temp=input.trim();   
        float   f;   
        try{   
                f=Float.parseFloat(temp);   
    
        }catch(Exception   e){return   "输入字串不是数字串只能包括以下字符('0'~'9','.'),输入字串最大只能精确到仟亿,小数点只能两位!";}   
        int   len=0;   
        if   (temp.indexOf(".")==-1)   len=temp.length();   
        else   len=temp.indexOf(".");   
        if(len>s4.length()-3)   return "输入字串最大只能精确到仟亿,小数点只能两位!";   
        int   n1,n2=0;   
        String   num="";   
        String   unit="";   
    
        for(int   i=0;i<temp.length();i++){   
        if(i>len+2)break;   
        if(i==len)   continue;   
        n1=Integer.parseInt(String.valueOf(temp.charAt(i)));   
        num=s1.substring(n1,n1+1);   
        n1=len-i+2;   
        unit=s4.substring(n1,n1+1);   
        result=result.concat(num).concat(unit);   
        } 
        
        if   ((len==temp.length())||(len==temp.length()-1))   result=result.concat("整");   
        if   (len==temp.length()-2)   result=result.concat("零分");     
           
        return   result;   
    }
public static void main(String[] args) throws Exception 
{InputStreamReader reader = new InputStreamReader(System.in);
BufferedReader input=new BufferedReader(reader);
System.out.print("请输入数字后开转换");
String text=input.readLine();Text A=new Text();
String r=A.numtochinese(text);System.out.println(r);
}
 }就是人民币小写边大写,程序可以运行,可是当你输入0时候,就会
出现零千零万等信息,,希望有高手指点,,在这程序上面,改下。。谢谢谢谢谢谢

解决方案 »

  1.   

    内部培训资料:
    一、最新大型新东方J2EE培训视频录像(新东方高级JAVA培训讲师  20G  共6DVD)
          培训内容: 初级部分(280学时)+高级部分(400学时),共680学时。
      初级部分(280学时)
      1). JavaOO程序设计基础:J2sdk基础、Java 面向对象基础、Java API使用、数据结构及算法基础、Java高级类特性、异常处理; 
      2). J2SE平台程序设计:Java AWT图形界面程序开发,Swing图形程序设计,Socket网络应用程序设计,对象序列化,Java 常用数据结构,Applet,高级I/O流和文件编程,多线程程序设计;
      3). 项目开发:globle get 多线程下载系统 
      4). Java桌面系统项目开发:桌面项目,基于Socket的聊天室;数据库:SQL、ORACLE9i 数据库的管理基础; 
      5). Java Web应用编程:Java数据库编程:JDBC、JDBC-ODBC Java Web编程:JSP、Servlet、JavaBean、java应用编程服务器:Tomcat / … 集成开发环境(IDE):Jbuilder / Eclipse / … Java应用构建工具:Apache Ant / …; 
      6). 项目开发:移动公司计费账务管理系统            
      高级部分(400学时)
      1). Linux初步:Linux基本操作,LINUX下的Java程序开发,Linux系统的简单管理; 
      2). 数据库深入编程:PL/SQL;数据库和数据库设计库程序设计; 
      3). Struts、spring、hibernate:高级Java Web应用开发:业界通用的MVC设计模式,Struts架构、应用程序国际化、Struts Taglib; 
      4). 项目开发:大唐任务管理系统;
      5). J2ME程序设计:移动开发概述、J2ME界面程序设计、J2ME数据库程序设计、手机短信、多媒体短信(彩信)开发; 
      6). Java高级程序设计(J2EE):J2EE架构、EJB核心技术;J2EE主流开发工具JBuilder、应用服务器WebLogic ;Java和XML:XML, Web Service,异构系统整合、分布式应用;
      7). 软件系统架构设计:UML与系统建模和设计、Rational Rose、软件工程和软件过程模型、版本控制;
      8). 项目开发:中国移动电子运行维护系统;
    二、Oracle培训录像
       1.Oracle 9i DBA大型中文视频培训录像(全)(中国IT认证实验室 13.4G 共4DVD)
         *1Z0-007 Introduction to Oracle9i SQL 
         *1Z0-031 Oracle9i DBA Fundamentals I 
         *1Z0-032 Oracle9i DBA Fundamentals II 
         *1Z0-033 Oracle9i Performance Tuning
           另附全套PPT幻灯片培训讲稿。
        全程标准Oracle大学授课环境,资深Oracle认证讲师、中国电信深圳培训中心数据库讲师主讲。具有多年的Oracle DBA教学经验,授课风格自成一体,逻辑清晰、层次分明,讲解深入浅出、信息量大,实用性强,短时间内把您培养成高级数据库专家。
       2.Oracle 10G 数据库培训录像(中科院 共18讲)
    三、项目经理快速培训
        IT项目管理培训录像(项目经理提升必看)(共28集 Rmvb格式 1DVD)现在购买送
    1.孙鑫 XML网页编程开发详解 (内容大小2G 1DVD)
    2.孙鑫J2EE培训录像(共76讲 含源代码及PPT幻灯片课件 1DVD)
        本视频侧重于J2EE框架机制原理,内容分为spring,struts,hibernate,powerdesign四个部分的讲解(Spring共23讲,详细讲解了spring的使用。Struts共13讲,Struts通过一个完整视例讲解全部流程,以及标签库。Hibernate共24讲,深入讲解了hibernate的机制。PowerDesigner共6讲,讲解数据库建模的步骤及其工具的使用。)
    需要的速联系
    Q Q: 3670989
    MSN: [email protected]
      

  2.   

    在你的if   (temp.indexOf(".")==-1)   len=temp.length();   
    else   len=temp.indexOf(".");和if(len>s4.length()-3)   return "输入字串最大只能精确到仟亿,小数点只能两位!";   加上以下代码:int index = 0;
    while (index < len - 1 && temp.charAt(index) == '0') {
    index++;
    }
    temp = temp.substring(index);
    len = len - index;
      

  3.   

    在开始加个判断 temp 所有数字的字符是否为0,
      

  4.   

    String ling = abc.substring(0,1);
    if (ling.equals("零"){
      abc = abc.substring(2,abc.length())
    }
    差不多就是这个意思
      

  5.   

    可以改到原文件中吗?我JAVA很不好的,谢谢啊,帮下:)
      

  6.   

    把程序给你稍微改了一下,增加了解决你出现问题的代码,并去掉没有用到的变量定义,赋值语句等。代码如下:import java.io.BufferedReader;
    import java.io.InputStreamReader;class Text {
    public static String numtochinese(String input) {
    String s1 = "零壹贰叁肆伍陆柒捌玖";
    String s4 = "分角整元拾佰仟万拾佰仟亿拾佰仟";
    String temp = input.trim();
    String result = ""; try {
    Float.parseFloat(temp); } catch (Exception e) {
    return "输入字串不是数字串只能包括以下字符('0'~'9','.'),输入字串最大只能精确到仟亿,小数点只能两位!";
    }

    int len = 0;
    if (temp.indexOf(".") == -1) {
    len = temp.length();
    } else {
    len = temp.indexOf(".");
    }

    //===========以下是新增加的代码==============
    int index = 0;
    while (index < len - 1 && temp.charAt(index) == '0') {
    index++;
    }
    temp = temp.substring(index);
    len = len - index;
    //===========以上是新增加的代码==============

    if (len > s4.length() - 3) {
    return "输入字串最大只能精确到仟亿,小数点只能两位!";
    }

    int n1 = 0;
    String num = "";
    String unit = "";
    for (int i = 0; i < temp.length(); i++) {
    if (i > len + 2) {
    break;
    } else if (i == len) {
    continue;
    }
    n1 = Integer.parseInt(String.valueOf(temp.charAt(i)));
    num = s1.substring(n1, n1 + 1);
    n1 = len - i + 2;
    unit = s4.substring(n1, n1 + 1);
    result = result.concat(num).concat(unit);
    } if ((len == temp.length()) || (len == temp.length() - 1)) {
    result = result.concat("整");
    } else if (len == temp.length() - 2) {
    result = result.concat("零分");
    } return result;
    } public static void main(String[] args) throws Exception {
    InputStreamReader reader = new InputStreamReader(System.in);
    BufferedReader input = new BufferedReader(reader);
    System.out.print("请输入数字后开转换:");
    String text = input.readLine();
    String r = numtochinese(text);
    System.out.println(r);
    }
    }
    测试结果:
    请输入数字后开转换:000000000000000000000000
    零元整
      

  7.   

    上网收一下吧,网上有,
    各种语言版本的,看看吧!
    判断字符串格式的问题,正则表达式比较方便.
    java是支持正则表达试的.
      

  8.   

    for循环部分的代码改成以下语句: int n1 = 0;
    String num = "";
    String unit = "";
    boolean midZero = false;
    for (int i = 0; i < temp.length(); i++) {
    if (i > len + 2) {
    break;
    } else if (i == len) {
    continue;
    }
    n1 = Integer.parseInt(String.valueOf(temp.charAt(i)));
    if (n1 == 0) {
    midZero = true;
    continue;
    }
    num = s1.substring(n1, n1 + 1);
    n1 = len - i + 2;
    unit = s4.substring(n1, n1 + 1);
    if (midZero == true) {
    result = result.concat("零");
    midZero = false;
    }
    result = result.concat(num).concat(unit);
    }
    测试结果:
    请输入数字后开转换:30075023
    叁仟零柒万伍仟零贰拾叁元整