求程序一(进来帮个忙吧!)

Gallen1983 2007-06-26 05:22:04
问题:输入数字,程序处理后自动解析为人民币字样!
(例如:输入1234.43; 输出为“壹仟贰佰叁拾肆圆肆角叁分)
最小精确到小数点后两位,最大为一亿!

方法越多越好,先谢谢各位了!
...全文
199 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Gallen1983 2007-06-27
  • 打赏
  • 举报
回复
感谢楼上两位,还是希望大家发表自己的观点,说出自己对问题的看法,没有程序,说一下与众不同的想法也可!!!

再次感谢!
tdy1234 2007-06-27
  • 打赏
  • 举报
回复

public class math2 {

public math2(){}
public String setmoney1(int a)
{

switch(a)
{
case 1: return("圆");
case 2:return("拾");
case 3:return("佰");
case 4:return("仟");
case 5:return("万");
case 6:return("拾万");
case 7:return("佰万");
case 8:return("仟万");
case 9:return("亿");
default: return("错误");
}
}
public String setnumber(char b)
{

switch(b)
{
case '1': return("壹");
case '2':return("贰");
case '3':return("叁");
case '4':return("肆");
case '5':return("伍");
case '6':return("陆");
case '7':return("柒");
case '8':return("捌");
case '9':return("九");
default: return("错误");
}


}

public static void main(String [] args)
{
math2 m=new math2();
double n=143453.33;
String a=Double.toString(n);
char [] b=a.toCharArray();
int n_point=a.indexOf(".");
int i;
System.out.println(b[0]);
for(i=0;i<n_point-1;i++)
{
System.out.print(m.setnumber(b[i]));

System.out.print(m.setmoney1(n_point-i));
}
System.out.print(m.setnumber(b[n_point+1]));
System.out.print("角");
System.out.print(m.setnumber(b[n_point+2]));
System.out.print("分");
}

}
试写了一个 LZ参考一下
pwl2014 2007-06-27
  • 打赏
  • 举报
回复
以前看到的一个,希望对你有帮助:
import java.io.*;
//将浮点数转化为中文写法的类
class ChineseMoney{
private String number[]={"","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
private String unit[]={"元","拾","佰","仟","万","拾","佰","仟","亿","拾","佰"};
private String small[]={"角","分"};
private String strNumber,strUnit,strAll;

private String onlyInt(int intInt)
{
String strInt;
strInt=String.valueOf(intInt);
strNumber="";
strUnit="";
strAll="";
int l=strInt.length ();
int j,k,zeorCount;
zeorCount=0;
for (k=0;k<l;k++)
{
String strTemp=strInt.substring(k,k+1);
int intTemp=Integer.parseInt(strTemp);
strNumber=number[intTemp];
j=l-1-k;
strUnit=unit[j];
if (intTemp==0)
{
if (zeorCount==0)
{
strUnit=strUnit.replace('拾','零');
strUnit=strUnit.replace('佰','零');
strUnit=strUnit.replace('仟','零');
strUnit=strUnit.replace('万','零');
}
else
{
strUnit=strUnit.replaceAll("拾","");
strUnit=strUnit.replaceAll("佰","");
strUnit=strUnit.replaceAll("仟","");
strUnit=strUnit.replaceAll("万","");
}
zeorCount++;
}
strAll+=strNumber+strUnit;
}
return strAll;

}

private String onlySmall(int intSmall)
{

strNumber="";strUnit="";strAll="";
String strSmall,strTemp;
strSmall=String.valueOf(intSmall);
int i;
if (intSmall>=10)
{
for (i=0;i<strSmall.length();i++)
{
strTemp=String.valueOf(intSmall).substring(i,i+1);
if (Integer.parseInt(strTemp)!=0)
{
strNumber=number[Integer.parseInt(strTemp)];
strUnit=small[i];
strAll+=strNumber+strUnit;
}
}
}
else
{
if (intSmall!=0)
{
strNumber=number[intSmall];
strUnit=small[1];
strAll+=strNumber+strUnit;
}
}

return strAll;
}

public String getChineseMoney(double number)
{
//四舍五入
number=(number*100+0.5)/100;

String strAll,strChineseInt,strChineseSmall,strZheng;;
int intInt,intSmall;
strChineseInt="";strChineseSmall="";strZheng="";

//整数部分
intInt=(int)( number*100/100);
if (intInt!=0)
{
strChineseInt=onlyInt(intInt);
}
//小数部分
double temp=(number-intInt)*100*100/100;
//对小数部分四舍五入
intSmall=(int)(temp*100+0.5)/100;
if (intSmall!=0)
{
strChineseSmall=onlySmall(intSmall);
}
else
{
strZheng="整";
}
strAll=strChineseInt+strChineseSmall+strZheng;
return strAll;
}
public static void main(String args[]) throws IOException
{
ChineseMoney cm=new ChineseMoney();
double money;
String strMoney,strChineseMoney;
strMoney="";
System.out.println("输入货币(四舍五入):");
BufferedReader cin = new BufferedReader(new InputStreamReader(System.in));
strMoney = cin.readLine();
money=Double.parseDouble(strMoney);
strChineseMoney=cm.getChineseMoney(money);
System.out.println(strChineseMoney);
}
}

SoftBomb 2007-06-27
  • 打赏
  • 举报
回复
穷举法肯定用的人少:把所有可能的值都列出来,弄个映射表,key就是数字,value就是对应的字
Gallen1983 2007-06-27
  • 打赏
  • 举报
回复
楼上两位,我只是希望你帮个忙,没让你说那么多废话!我还不知道网上有啊?

我只是想求一些新的方法。
unika_ly12 2007-06-26
  • 打赏
  • 举报
回复
同意,网上有好多
xiaoxiao321 2007-06-26
  • 打赏
  • 举报
回复
这样的问题还敢拿出来问啊,不会网上一大堆。搜一下,写了这么多

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧