| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 480 人关注过本帖
标题:帮个朋友问的,我自己也看不懂,请教!
只看楼主 加入收藏
tcboy20
Rank: 1
等 级:新手上路
帖 子:72
专家分:0
注 册:2006-3-9
收藏
 问题点数:0 回复次数:5 
帮个朋友问的,我自己也看不懂,请教!

帮个朋友问的,我自己也不知道是怎么回事,帮我看看这个是什么错误,
public class MM
{
public static void main(String args[])
{ String m[]={"","壹","貳","叁","肆","伍","陸","柒","捌","玖"};
String r[]={"元","拾","佰","仟","萬","拾","佰","仟","亿","拾","佰"};
String S[]={"角","分"};
String str01="",str02="";
int a=0;int z2[]={};
/*以下是分离整数小数*/
String str=args[0];
// String str=Input.readString();
int i=str.indexOf(".");
String str_x=str.substring(i+1);
String str_z=str.substring(0,i);
System.out.println(str_x);
System.out.println(str_z);
/*以下是整数部分*/
for (int p=0;p<str_z.length();p++)
{
char z=str_z.charAt(p);
int z1=(int)z-48;
z2=new int[str_z.length()];
z2[p]=z1;
//System.out.print(z2);
if (z2[p]!=0)
str01=str01+m[z1]+r[str_z.length()-1-p];
else
if (p==str_z.length()-1)
str01=str01+"zheng";
else
if (a==0)
{
str01=str01+"零";
a=1;
}
}
System.out.print(str01);
System.out.println();
/*以下是小数部分*/
if (str_x.length()>2)
str_x=str_x.substring(0,2);
for (int q=0;q<2;q++)
{
char x=str_x.charAt(q);
//String x2=(String)x;
//int x1=Integer.parseInt(x);
int x1=(int)x;
if ((x1-48)!=0)
{
str02=str02+m[x1-48]+S[q];
//System.out.print(q);
}
}System.out.print(str01+str02);
}
}




具体解释下!

搜索更多相关主题的帖子: 朋友 
2006-03-19 22:11
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 

你这个应该是把阿拉伯数字转为中文大写字的一个程序
从java MM 1235
接受参数,然后分析1235字符串,如果有小数点,分离出小数点,没有小数点就判断数字的大小


可惜不是你,陪我到最后
2006-03-20 10:27
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 
但是你的程序中有错误,在运行的时候会出现数组下标异常

可惜不是你,陪我到最后
2006-03-20 10:30
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 

public class MM
{
public static void main(String args[])
{ String m[]={"","壹","貳","叁","肆","伍","陸","柒","捌","玖"};
String r[]={"元","拾","佰","仟","萬","拾","佰","仟","亿","拾","佰"};
String S[]={"角","分"};
String str01="",str02="";
String str_x=new String();
String str_z=new String();
int a=0;int z2[]={};
/*以下是分离整数小数*/
String str=args[0];
int i=str.indexOf(".");
//判断i是否为-1来确定是否含有小数点
//如果i不等于-1就说明有小数点
if(i!=-1){
str_x=str.substring(i+1);
str_z=str.substring(0,i);
}
else{
str_z=str;
str_x=null;
}
//判断如果整数部份大于佰亿的话,程序打印出一条消息后,直接结束!
if(str_z.length()>11){
System.out.println("您输入的数字超过了本程序能显示的范围!!");
System.exit(1);
}

System.out.println(str_x);
System.out.println(str_z);
/*以下是整数部分*/
for (int p=0;p<str_z.length();p++)
{
char z=str_z.charAt(p);
int z1=(int)z-48;
z2=new int[str_z.length()];
z2[p]=z1;
//如果非0,那么就马上要把a改回到0去
if (z2[p]!=0){
str01=str01+m[z1]+r[str_z.length()-1-p];
a=0;
}

else
if (p==str_z.length()-1)
str01=str01+"整";
else
if (a==0)
{
str01=str01+"零";
a=1;
}
}

/*以下是小数部分*/
if (str_x!=null){
//如果str_x的长度小于等于2那么就取str_x的长度
//否则就取2为长度,这样就避免了数组下标越界的异常
int leng=(str_x.length()<=2)?str_x.length():2;

str_x=str_x.substring(0,leng);

for (int q=0;q<leng;q++)
{
char x=str_x.charAt(q);
int x1=(int)x;
if ((x1-48)!=0)
{
str02=str02+m[x1-48]+S[q];
}

//System.out.print(q);
}
}System.out.print(str01+str02);
}
}

现在不会有异常了
但是还有一点没有完善,就是中间很多0的时候会报数不准确,其它都还好


可惜不是你,陪我到最后
2006-03-20 11:04
tcboy20
Rank: 1
等 级:新手上路
帖 子:72
专家分:0
注 册:2006-3-9
收藏
得分:0 
谢谢。。。。
2006-03-20 11:40
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 

这个程序还需要自己去完善的


可惜不是你,陪我到最后
2006-03-20 11:47
快速回复:帮个朋友问的,我自己也看不懂,请教!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019302 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved