求将费用数字转换成大写的JAVA方法!!!

黑马 2005-07-14 06:18:57
如题
...全文
218 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
wlmmlw 2005-09-30
  • 打赏
  • 举报
回复
//抄别人的,Pascal
//---初学者

function NumToChar(n:Real): wideString; //可以到万亿,并可随便扩大
const
cNum:WideString='零壹贰叁肆伍陆柒捌玖-万仟佰拾亿仟佰拾万仟佰拾元角分';
cCha:array[0..1, 0..11]of string =
(( '零仟','零佰','零拾','零零零','零零','零亿','零万','零元','亿万','零角','零分','零整'),
( '零','零','零','零','零','亿','万','元','亿','零','整','整'));
var
i :Integer;
sNum :WideString;
begin
result :='';
sNum := FormatFloat('0',n*100);
for i := 1 to Length(sNum) do
result := result + cNum[ord(sNum[i])-47] + cNum[26-Length(sNum)+i];
for i:= 0 to 11 do //去掉多余的零
result := StringReplace(result, cCha[0,i], cCha[1,i], [rfReplaceAll]);
end;

saiche05 2005-09-30
  • 打赏
  • 举报
回复
牛b

dd
amu0528 2005-09-30
  • 打赏
  • 举报
回复
哈哈,搜一下,很多的
  • 打赏
  • 举报
回复
我有C版本的,等有时间改写一下
shoulders 2005-07-15
  • 打赏
  • 举报
回复
在字符串最后加整不就完事了吗
紫罗兰Cherry 2005-07-15
  • 打赏
  • 举报
回复
楼上的有各问题,输出的中文显示有问题,是?

有思路,但没有写代码。
思路:
1。获取小数点前面的数字放入数组,处理方法可以如楼上缩写。
2。获取小数点后面的数字,放入数组,这个比较简单只要把对应的数字转换为对应的大写就可以。
3。然后把上面两部分拼起来,就可以了。

:)
紫罗兰Cherry 2005-07-15
  • 打赏
  • 举报
回复
这个应该没有小数点后面的数字的转换吧
黑马 2005-07-15
  • 打赏
  • 举报
回复
最好有“整”
  • 打赏
  • 举报
回复
我没写完 大概就是这个意思
  • 打赏
  • 举报
回复
public class test1
{
public static void main(String args [])
{
test1 shu=new test1();
long x=12345678;
int j=shu.zh(x);
}
public int zh(long x)
{
String xx="";
xx=String.valueOf(x);
System.out.println(xx);
int y=xx.length();
String arr []=new String [y];
int l=arr.length;
System.out.println("length:"+l+"位数");
test1 ky=new test1();
for(int i=0;i<arr.length;i++)
{
arr[i]=xx.substring(i,i+1);
String b="";
b=ky.hz(arr[i]);
arr[i]=b;
}
if (arr.length==1)
{
System.out.println(arr[0]+"元");
}
if (arr.length==2)
{
if (arr[1].equals("零"))
{
System.out.println(arr[0]+"拾"+"元");
}
else
{
System.out.println(arr[0]+"拾"+arr[1]+"元");
}
}
if (arr.length==3)
{
if (arr[2].equals("零")&&!arr[1].equals("零"))
System.out.println(arr[0]+"佰"+arr[1]+"拾"+"元");
else if (arr[1].equals("零")&&arr[2].equals("零"))
System.out.println(arr[0]+"佰"+"元");
else
System.out.println(arr[0]+"佰"+arr[1]+"拾"+arr[2]+"元");
}
if (arr.length==4)
{
if (arr[3].equals("零")&&!arr[1].equals("零")&&!arr[2].equals("零"))
System.out.println(arr[0]+"仟"+arr[1]+"佰"+arr[2]+"拾"+"元");
else if (arr[3].equals("零")&&arr[2].equals("零")&&!arr[1].equals("零"))
System.out.println(arr[0]+"仟"+arr[1]+"佰"+"元");
else if (arr[3].equals("零")&&arr[2].equals("零")&&arr[1].equals("零"))
System.out.println(arr[0]+"仟"+"元");
else
System.out.println(arr[0]+"仟"+arr[1]+"佰"+arr[2]+"拾"+arr[3]+"元");
}
if (arr.length==5)
{
System.out.println(arr[0]+"万"+arr[1]+"仟"+arr[2]+"佰"+arr[3]+"拾"+arr[4]+"元");
}
if (arr.length==6)
{
System.out.println(arr[0]+"拾"+arr[1]+"万"+arr[2]+"仟"+arr[3]+"佰"+arr[4]+"拾"+arr[5]+"元");
}
if (arr.length==7)
{
System.out.println(arr[0]+"佰"+arr[1]+"拾"+arr[2]+"万"+arr[3]+"仟"+arr[4]+"佰"+arr[5]+"拾"+arr[6]+"元");
}
if (arr.length==8)
{
System.out.println(arr[0]+"仟"+arr[1]+"佰"+arr[2]+"拾"+arr[3]+"万"+arr[4]+"仟"+arr[5]+"佰"+arr[6]+"拾"+arr[7]+"元");
}
if (arr.length==9)
{
System.out.println(arr[0]+"元");
}
return y;
}
public String hz(String alb)
{
String zw="";
if (alb.equals("1"))
{
zw="壹";
}
if (alb.equals("2"))
{
zw="贰";
}
if (alb.equals("3"))
{
zw="叁";
}
if (alb.equals("4"))
{
zw="肆";
}
if (alb.equals("5"))
{
zw="伍";
}
if (alb.equals("6"))
{
zw="陆";
}
if (alb.equals("7"))
{
zw="柒";
}
if (alb.equals("8"))
{
zw="捌";
}
if (alb.equals("9"))
{
zw="久";
}
if (alb.equals("0"))
{
zw="零";
}
return zw;
}
}
zebra007 2005-07-14
  • 打赏
  • 举报
回复
有这么简单吗。不是吧
我觉得要做出来还挺复杂的
w1w2w34 2005-07-14
  • 打赏
  • 举报
回复
什么费用数字?
是不是这样“一二三”->“壹贰叁”,比较好办啊,从字符串中一个一个把简体字取出来,然后用switch语句将其转换为繁体输出就行了。

81,092

社区成员

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

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