输入12345,相应输出一万两千三百四十五的算法
2010-04-13 17:54
323 查看
public class numberic {
public static void main(String[] args){
printNumToChinese(11124267345786l);
}
private static void printNumUnit(int digit){
String[] num_unit = {"十","百","千","万","亿"};
if(digit%8 == 0 && digit != 0)
System.out.print(num_unit[4]);
if((digit - 4)%8 == 0 && digit%8 != 0)
System.out.print(num_unit[3]);
if((digit - 3)%4 == 0)
System.out.print(num_unit[2]);
if((digit - 2)%4 == 0)
System.out.print(num_unit[1]);
if((digit - 1)%4 == 0)
System.out.print(num_unit[0]);
}
private static void printNumToChinese(long num){
String[] chs_num = {"零","一","二","三","四","五","六","七","八","九","十"};
boolean flag = true;//为了标两亿零七百八十跟两亿三百万零七百八十中要不要加万的区别
for(int i = String.valueOf(num).length() - 1; i >= 0; i--){
int n = (int)(num/Math.pow(10, i));
if(num == 0)
break;
if(n != 0)
System.out.print(chs_num
);
if(n != 0){
printNumUnit(i);
}
num = num - n*(long)Math.pow(10, i);
if(n == 0 && i - String.valueOf(num).length() >= 4)
flag = false;
if(i%4 == 0 && n == 0 && flag){
printNumUnit(i);
flag = true;
}
if(i - String.valueOf(num).length() == 0 && n == 0){
System.out.print(chs_num
);
}
}
}
}
public static void main(String[] args){
printNumToChinese(11124267345786l);
}
private static void printNumUnit(int digit){
String[] num_unit = {"十","百","千","万","亿"};
if(digit%8 == 0 && digit != 0)
System.out.print(num_unit[4]);
if((digit - 4)%8 == 0 && digit%8 != 0)
System.out.print(num_unit[3]);
if((digit - 3)%4 == 0)
System.out.print(num_unit[2]);
if((digit - 2)%4 == 0)
System.out.print(num_unit[1]);
if((digit - 1)%4 == 0)
System.out.print(num_unit[0]);
}
private static void printNumToChinese(long num){
String[] chs_num = {"零","一","二","三","四","五","六","七","八","九","十"};
boolean flag = true;//为了标两亿零七百八十跟两亿三百万零七百八十中要不要加万的区别
for(int i = String.valueOf(num).length() - 1; i >= 0; i--){
int n = (int)(num/Math.pow(10, i));
if(num == 0)
break;
if(n != 0)
System.out.print(chs_num
);
if(n != 0){
printNumUnit(i);
}
num = num - n*(long)Math.pow(10, i);
if(n == 0 && i - String.valueOf(num).length() >= 4)
flag = false;
if(i%4 == 0 && n == 0 && flag){
printNumUnit(i);
flag = true;
}
if(i - String.valueOf(num).length() == 0 && n == 0){
System.out.print(chs_num
);
}
}
}
}
相关文章推荐
- 算法题:输入一个表示整数的字符串,把该字符串转换成整数并输出。例如输入字符串“12345”,则输出整数“12345”
- 算法的基本概念及特性(有穷性、确定性、可行性、输入和输出)
- c语言:输入一个数,从高位向低位输出,如:输入12345,输出1 2 3 4 5
- 输入十六进制数输出相应的十进制数
- c语言:输入一个数,从高位向低位输出,如:输入12345,输出1 2 3 4 5
- 算法实现将一个输入的数字颠倒(输入12345->54321)
- C++实现:双输入单输出系统:建立一个 感知器网络,实现上述样本的分类。计算出相应的网络权值矩阵w。
- C语言 统计输入任意多数字的偶数和奇数的个数,并输出相应的内容
- 写一个函数 输入一个十六进制数,输出相应的十进制数。
- 现在给出你一些数,要求你写出一个程序,输出这些整数相邻最近的素数,并输出其相距长度。如果左右有等距离长度素数,则输出左侧的值及相应距离。 如果输入的整数本身就是素数,则输出该素数本身,
- 数据结构——算法之(008)( 输入一个表示整数的字符串,把该字符串转换成整数并输出)
- 按要求分解字符串,输入两个数M,N;M代表输入的M串字符串,N代表输出的每串字符串的位数,不够补0。例如:输入2,8, “abc” ,“123456789”,则输出为“abc00000”,“12345
- 题目:输入N个整数,找出其中最小的k个整数。例如输入 4,5,1,6,2,7,3,8,输入k=4,则输出最小的四个数是1,2,3,4 算法分析: 算法1.O(n)的算法,修改输入的数组 可以基于get
- 【给将来学神的算法详解--高精】(9)输入输出与总结
- 34-输入5个数字,使用递归的算法倒叙输出
- 按要求分解字符串,输入两个数M,N;M代表输入的M串字符串,N代表输出的每串字符串的位数,不够补0。例如:输入2,8, “abc” ,“123456789”,则输出为“abc00000”,“12345
- 微软算法100道题------输入一个单向链表,输出该链表中倒数第k个结点。链表的倒数第0个结点为链表的尾指针
- 【每天算法4】编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。
- 算法:汽车在有里程标志的公路上行驶,从键盘输入开始和结束的里程及时间(以时、分、秒输入),计算并输出其平均速度(千米/小时)
- 编写一个函数func(),将此函数的输入参数(int型)逆序输出显示,如54321 –> 12345,要求使用递归,并且函数体代码不超过8行