数字转换成大写程序缺陷疑问
这是我自己写的一段代码,用于将输入的数字转化成大写的数字,但是有两个缺陷,第一:开头如果输入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);
}
}