日期:2014-05-20  浏览次数:20758 次

数字转换成大写程序缺陷疑问
这是我自己写的一段代码,用于将输入的数字转化成大写的数字,但是有两个缺陷,第一:开头如果输入0就无法读出。第二:如果输入的数字特长就会出错,请问各位高手这该怎么解决?这又是怎么回事啊?

package exam;
import java.io.*;
import java.util.*;
public class 从键盘接受一个数字列出该数字的中文表示格式 {
        public static void main(String[] args)throws Exception {
                chuancan();
        }
        public static void chuancan()throws Exception
        {
                BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
                Integer p=Integer.parseInt(br.readLine());
                
                quchu( p);
        }
        public static void quchu(Integer p)
        {
        //        String g=p.toString();
                String []str=new String[]{"零","一","二","三","四","五","六","七","八","九"};
                 StringBuilder sb=new StringBuilder(); 
                 sb.append(p);
                for(int i=0;i<sb.length();i++)
                {                
                        //Integer.parseInt( sop(sb.substring(i, i+1));//Integer.parseInt()这里不能放sop()函数,自找麻烦。
            //String r=         sop(sb.substring(i, i+1)).toString();
                        //System.out.print(sb.substring(i, i+1))
        int t=                Integer.parseInt(        sb.substring(i, i+1));
          sop(str[t]);
                }
        }
public static void sop(Object obj)
{
System.out.print(obj);
}
}
------解决方案--------------------
int 是有界限的,要算大数字可以学习一下BigInteger类,一般情况下再大都不怕
------解决方案--------------------
你得读入一个字符串,而不是Integer整数对象,他会忽略0
你只需要改两句
Integer p=Integer.parseInt(br.readLine());

改成
String p = br.readLine();

然后顺便把你的quchu函数参数类型改成String类型
package pk;

import java.io.*;
import java.util.*;

public class 从键盘接受一个数字列出该数字的中文表示格式 {
public static void main(String[] args) throws Exception {
chuancan();
}

public static void chuancan() throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String p = br.readLine();

quchu(p);
}

public static void quchu(String p) {
// String g=p.toString();
String[] str = new String[] { "零", "一", "二", "三", "四", "五", "六", "七",
"八", "九" };
StringBuilder sb = new StringBuilder();
sb.append(p);
for (int i = 0; i < sb.length(); i++) {
// Integer.parseInt( sop(sb.substring(i,
// i+1));//Integer.parseInt()这里不能放sop()函数,自找麻烦。
// String r= sop(sb.substring(i, i+1)).toString();
// System.out.print(sb.substring(i, i+1))
int t = Integer.parseInt(sb.substring(i, i + 1));
sop(str[t]);
}
}

public static void sop(Object obj) {
System.out.print(obj);
}
}