java程序---将一个浮点数转换成人民币读法
2014-11-26 19:19
405 查看
代码如下:
<span style="font-size:18px;">package test;
import java.util.Scanner;
//将输入的浮点型钱数,转成人民币读法
public class Num2Rmb {
private static double num;
private long zheng,xiao;
private String[] hanArr={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
private String[] danwei={"千","百","十",""};
private String[] jinwei={"","万","亿"};
private int[][] temp= new int[4][18];
//将输入的钱数,转成小数和整数部分
private void swp(){
zheng=(long)num;
xiao=Math.round((num-zheng)*100);
}
//将整数部分按四位划分成3个部分,不存在的补0
private void divide(){
int i,j,k=0;
for(i=0;i<3;i++){
long t1=zheng%10000;
int t=(int) t1;
zheng=zheng/10000;
for(j=3;j>=0;j--){
temp[i][j]=t%10;
t=t/10;
}
}
}
//检测是否要对当前的四位进行处理
private int check(int i){
for(int j=0;j<4;j++)
if(temp[i][j]!=0)
return 1;
return 0;
}
//打印结果
private void print(){
//先处理整数部分
//flag用于表示当前部分是否要处理前导0
int i,j,k,flag=0,cnt=0,flag2=0;
for(i=2;i>=0;i--){
if(check(i)==0){
if(flag==1&&cnt==0){
System.out.print("零");
cnt++;
}
flag=0;
continue;
}
//处理前导0
for(j=0;j<4;j++)
if(temp[i][j]!=0)
break;
flag2=1;
if(j!=0&&flag==1)
System.out.print("零");
int d;
//将末尾的0去掉
for(d=3;d>=0;d--)
if(temp[i][d]!=0)
break;
for(k=j;k<=d;k++){
if(temp[i][k]!=0)
System.out.print(hanArr[temp[i][k]]+danwei[k]);
else if(k-1>=0&&temp[i][k-1]!=0){
System.out.print(hanArr[0]);
}
}
flag=1;
System.out.print(jinwei[i]);
}
if(flag2==1)
System.out.print("元");
//处理小数部分
if(xiao/10!=0)
System.out.print(hanArr[(int)xiao/10]+"角");
if(xiao%10!=0)
System.out.print(hanArr[(int)xiao%10]+"分");
System.out.println();
}
//对外的运行接口
public void run(){
swp();
divide();
print();
}
public static void main(String[] args){
Scanner sc= new Scanner(System.in);
System.out.println("请输入钱数:");
while(sc.hasNext()){
num = sc.nextDouble();
Num2Rmb nr =new Num2Rmb();
/*
//调试部分
nr.swp();
System.out.println(nr.zheng+" "+nr.xiao);
nr.divide();
for(int i=2;i>=0;i--){
for(int j=0;j<4;j++)
System.out.print(nr.temp[i][j]);
System.out.println();
}
nr.print();
*/
nr.run();
System.out.println("请输入钱数:");
}
}
}
</span>
<span style="font-size:18px;">package test;
import java.util.Scanner;
//将输入的浮点型钱数,转成人民币读法
public class Num2Rmb {
private static double num;
private long zheng,xiao;
private String[] hanArr={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
private String[] danwei={"千","百","十",""};
private String[] jinwei={"","万","亿"};
private int[][] temp= new int[4][18];
//将输入的钱数,转成小数和整数部分
private void swp(){
zheng=(long)num;
xiao=Math.round((num-zheng)*100);
}
//将整数部分按四位划分成3个部分,不存在的补0
private void divide(){
int i,j,k=0;
for(i=0;i<3;i++){
long t1=zheng%10000;
int t=(int) t1;
zheng=zheng/10000;
for(j=3;j>=0;j--){
temp[i][j]=t%10;
t=t/10;
}
}
}
//检测是否要对当前的四位进行处理
private int check(int i){
for(int j=0;j<4;j++)
if(temp[i][j]!=0)
return 1;
return 0;
}
//打印结果
private void print(){
//先处理整数部分
//flag用于表示当前部分是否要处理前导0
int i,j,k,flag=0,cnt=0,flag2=0;
for(i=2;i>=0;i--){
if(check(i)==0){
if(flag==1&&cnt==0){
System.out.print("零");
cnt++;
}
flag=0;
continue;
}
//处理前导0
for(j=0;j<4;j++)
if(temp[i][j]!=0)
break;
flag2=1;
if(j!=0&&flag==1)
System.out.print("零");
int d;
//将末尾的0去掉
for(d=3;d>=0;d--)
if(temp[i][d]!=0)
break;
for(k=j;k<=d;k++){
if(temp[i][k]!=0)
System.out.print(hanArr[temp[i][k]]+danwei[k]);
else if(k-1>=0&&temp[i][k-1]!=0){
System.out.print(hanArr[0]);
}
}
flag=1;
System.out.print(jinwei[i]);
}
if(flag2==1)
System.out.print("元");
//处理小数部分
if(xiao/10!=0)
System.out.print(hanArr[(int)xiao/10]+"角");
if(xiao%10!=0)
System.out.print(hanArr[(int)xiao%10]+"分");
System.out.println();
}
//对外的运行接口
public void run(){
swp();
divide();
print();
}
public static void main(String[] args){
Scanner sc= new Scanner(System.in);
System.out.println("请输入钱数:");
while(sc.hasNext()){
num = sc.nextDouble();
Num2Rmb nr =new Num2Rmb();
/*
//调试部分
nr.swp();
System.out.println(nr.zheng+" "+nr.xiao);
nr.divide();
for(int i=2;i>=0;i--){
for(int j=0;j<4;j++)
System.out.print(nr.temp[i][j]);
System.out.println();
}
nr.print();
*/
nr.run();
System.out.println("请输入钱数:");
}
}
}
</span>
相关文章推荐
- 用java编写一个程序,将浮点数转换成人民币读法字符串
- Java小程序——将浮点数转换成人民币读法
- 将一个浮点数转换成人民币读法字符串(java)
- 将一个浮点数转换成人民币读法字符串(java)
- 将一个浮点数转换成人民币读法字符串(java)
- 疯狂Java练习题 将浮点数转换成人民币读法字符串
- 疯狂java讲义 第四章 01人民币的转换读法小程序
- 将浮点数转换成人民币读法字符串(JAVA)
- 疯狂java讲义 第四章 01人民币的转换读法小程序
- Java实现浮点数转换成人民币读法字符串
- 疯狂java讲义4.2--浮点数转换成人民币读法
- 实现浮点数转换成人民币读法字符串(Java)
- 输入一个浮点数,打印出相对应的人民币读法的字符串,如:1605.22转换后为:壹仟陆佰零伍元贰角贰分
- JavaSE014_数组之应用举例(实现浮点数转换成人民币读法字符串)
- 将浮点数转换为人民币读法
- 编写程序把一个保存有二进制小数的字符数组转换为浮点数
- java程序中,将一个足够大的正整数,转换为二进制方法
- 今天开始学Java 写出一个程序,接受一个正浮点数值,输出该数值的近似整数值。
- 如何将一个用utf-8编码的文本用java程序转换成ANSI编码的文本
- 写一个程序,语言不限,能将人民币金额从阿拉伯数字转换为大写汉字表示。例如,把1234.56转换为壹仟贰佰叁拾肆圆零伍角陆分。