java批改算数题,看猖狂Java教材中的一个关于金钱转换的例题批改得来

代码如下:

import java.util.Arrays;

import java.util.Scanner;

/

Description:


网站: 猖狂Java联盟


Copyright (C), 2001-2012, Yeeku.H.Lee


This program is protected by copyright laws.


Program Name:


Date:

@author Yeeku.H.Lee kongyeeku@163.com

@version 1.0

/

public class Num2Rmb

{

private String[] hanArr = {零 , 壹 , 贰 , 叁 , 肆 ,

伍 , 陆 , 柒 , 捌 , 玖};

private String[] unitArr = {十 , 百 , 千};

private String[] weiArr={,万,亿};

/

把一个浮点数分化成整数项目组和小数项目组字符串

@param num 须要被分化的浮点数

@return 分化出来的整数项目组和小数项目组。第一个数组元素是整数项目组,第二个数组元素是小数项目组。

/

private String[] divide(double num)

{

//将一个浮点数强迫类型转换为long,即获得它的整数项目组

long zheng =  (long)num;

//浮点数减去整数项目组,获得小数项目组,小数项目组乘以100后再取整获得2位小数

long xiao = Math.round((num - zheng) 100);                  //Math.round(double d)返回最接近d的long,Math.round(float f)返回最接近f的int

//下面用了2种办法把整数转换为字符串

return new String[]{zheng + , String.valueOf(xiao)};

}

/

把一个四位的数字字符串变成汉字字符串

@param numStr 须要被转换的四位的数字字符串

@return 四位的数字字符串被转换成的汉字字符串。

/

private String toHanStr(String numStr)

{

String result = ;

int numLen = numStr.length();

//依次遍历数字字符串的每一位数字

for (int i = 0 ; i < numLen ; i++ )

{

//把char型数字转换成的int型数字,因为它们的ASCII码值正好相差48

//是以把char型数字减去48获得int型数字,例如4被转换成4。

int num = numStr.charAt(i) - 48;

//若是不是最后一位数字,并且数字不是零,则须要添加单位(千、百、十)

if ( i != numLen - 1 && num != 0)

{

result += hanArr[num] + unitArr[numLen - 2 - i];

}

//不然不要添加单位

else

{

result += hanArr[num];

}

}

return result;

}

//fing批改

//将一个多余4位的字符串批改为多个四位的字符串

//最多支撑到12位的字符串

private String[] fenJie(String numStr)

{

int numLen = numStr.length();

//断定应当分化为几个四位字符串

int temp = (numLen+3)/4;

String[] s = new String[temp];

for (int i = 0;i

s[i]=;

for ( int i = 0;i

{

s[(numLen-1-i)/4] += numStr.charAt(i);

}

return s;

}

//小数项目组的金额

private String toHan(String numStr)

{

String result = 元;

//把char型数字转换成的int

//是以把char型数字减去48获得int型数字,例如4被转换成4。

int num = numStr.charAt(0) - 0;

if (num != 0)

result += hanArr[num] + 角;

num = numStr.charAt(1) - 0;

if (num != 0)

result += hanArr[num] + 分;

return result;

}

public static void main(String[] args)

{

Num2Rmb nr = new Num2Rmb();

//测试把一个浮点数分化成整数项目组和小数项目组

System.out.println(Arrays.toString(nr.divide(236711125.123)));

//测试把一个四位的数字字符串变成汉字字符串

//System.out.println(nr.toHanStr(6109));

//fing批改

Scanner in = new Scanner(System.in);

double m = in.nextDouble();

String[] toM = nr.divide(m);

String[] ts = nr.fenJie(toM[0]);

String re = ;

System.out.println(ts.length);

for (int i = ts.length-1;i>=0;i--)

{

re += nr.toHanStr(ts[i]) + nr.weiArr[i];

}

System.out.println(re+nr.toHan(toM[1]));

in.close();

}

}

本法度呈现的题目是呈现多个0连气儿的时辰无法实现正常输出。请各位给点儿定见。彼此相爱,却不要让爱成了束缚:不如让它成为涌动的大海,两岸乃是你们的灵魂。互斟满杯,却不要同饮一杯。相赠面包,却不要共食一个。一起歌舞欢喜,却依然各自独立,相互交心,却不是让对方收藏。因为唯有生命之手,方能收容你们的心。站在一起却不要过于靠近。—— 纪伯伦《先知》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值