输入一个浮点数,打印出相对应的人民币读法的字符串,如:1605.22转换后为:壹仟陆佰零伍元贰角贰分
package demo40;
import java.util.Scanner;
/**
* 输入一个浮点数,打印出相对应的人民币读法的字符串,如:1605.22转换后为:壹仟陆佰零伍元贰角贰分
*
* @author trust the process
*
*/
public class Ttp {
public static void main(String[] args) {
double money = 0;
System.out.println("请输入一个浮点数X(X的取值范围为:1<=X<10000000):");
Scanner s = new Scanner(System.in);
money = s.nextDouble();
//判断是否符合要求
while(money >= 10000000 || money < 1){
System.out.println("超出范围!请重新输入:");
money = s.nextDouble();
}
// 把浮点数转换为字符串
String monStr = money + "";
// 求出第一次出现小数点的位置
int firIndex = monStr.indexOf('.');
// 创建一个字符数组来存储字符串
char[] m = monStr.toCharArray();
if (firIndex == 1) {
test(m[0]);
} else if (firIndex == 2) {
test(m[0]);
test3(2);
if (m[1] == '0') {
} else {
test(m[1]);
}
} else if (firIndex == 3) {
test(m[0]);
test3(3);
if (m[1] == '0' && m[2] == '0') {
} else if (m[1] == '0') {
test(m[0]);
test3(3);
test3(1);
test(m[2]);
} else if (m[2] == '0') {
test(m[1]);
test3(3);
} else {
test(m[1]);
test3(2);
test(m[2]);
}
} else if (firIndex == 4) {
test(m[0]);
test3(4);
if (m[1] == '0' && m[2] == '0' && m[3] == '0') { // 1000.22
} else if (m[1] == '0' && m[2] == '0') { // 1006.22
test3(1);
test(m[3]);
} else if (m[1] == '0' && m[3] == '0') { // 1050.22
test3(1);
test(m[2]);
test3(2);
} else if (m[2] == '0' && m[3] == '0') { // 1500.22
test(m[1]);
test3(3);
} else if (m[1] == '0') { // 1056.22
test3(1);
test(m[2]);
test3(2);
test(m[3]);
} else if (m[2] == '0') {
test(m[1]);
test3(3);
test3(1);
test(m[3]);
} else if (m[3] == '0') {
test(m[1]);
test3(3);
test(m[2]);
test3(2);
} else {
test(m[1]);
test3(3);
test(m[2]);
test3(2);
test(m[3]);
}
} else if (firIndex == 5) {
test(m[0]);
test3(5);
test2(firIndex, m);
} else if (firIndex == 6) {
// 确定“万”之上上的叫法
test(m[0]);
test3(2);
if (m[1] == '0') {
} else {
test(m[1]);
}
test3(5);
// 确定“万”之下的叫法
test2(firIndex, m);
} else if (firIndex == 7) {
// 确定“万”之上上的叫法
if (m[1] == '0' && m[2] == '0') {
test(m[0]);
test3(3);
} else if (m[1] == '0') {
test(m[0]);
test3(3);
test3(1);
test(m[2]);
} else if (m[2] == '0') {
test(m[0]);
test3(3);
test(m[1]);
test3(2);
} else {
test(m[0]);
test3(3);
test(m[1]);
test3(2);
test(m[2]);
}
test3(5);
// 确定“万”之下的叫法
test2(firIndex, m);
}
System.out.print("元");
// 确定小数部分的读法
if (monStr.length() - firIndex > 2) {
if (m[firIndex + 1] == '0' && m[firIndex + 2] == '0') {
test3(8);
} else if (m[firIndex + 1] == '0') {
test3(1);
test(m[firIndex + 2]);
test3(7);
} else if (m[firIndex + 2] == '0') {
test(m[firIndex + 1]);
test3(6);
} else {
test(m[firIndex + 1]);
test3(6);
test(m[firIndex + 2]);
test3(7);
}
} else if (monStr.length() - firIndex == 2) {
if (m[firIndex + 1] == '0') {
test3(8);
} else {
test(m[firIndex + 1]);
test3(6);
}
}
}
public static void test(char m) {
if (m == '0') {
System.out.print("零");
} else if (m == '1') {
System.out.print("壹");
} else if (m == '2') {
System.out.print("贰");
} else if (m == '3') {
System.out.print("叁");
} else if (m == '4') {
System.out.print("肆");
} else if (m == '5') {
System.out.print("伍");
} else if (m == '6') {
System.out.print("陆");
} else if (m == '7') {
System.out.print("柒");
} else if (m == '8') {
System.out.print("捌");
} else if (m == '9') {
System.out.print("玖");
}
}
public static void test2(int firIndex, char[] m) {
// 确定“万”之下的叫法
if (m[firIndex - 4] == '0' && m[firIndex - 3] == '0' && m[firIndex - 2] == '0' && m[firIndex - 1] == '0') {
test3(8);
} else if (m[firIndex - 4] == '0' && m[firIndex - 3] == '0' && m[firIndex - 2] == '0') {
test3(1);
test(m[firIndex - 1]);
} else if (m[firIndex - 4] == '0' && m[firIndex - 2] == '0' && m[firIndex - 1] == '0') {
test3(1);
test(m[3]);
test3(3);
} else if (m[firIndex - 4] == '0' && m[firIndex - 3] == '0' && m[firIndex - 1] == '0') {
test3(1);
test(m[2]);
test3(2);
} else if (m[firIndex - 3] == '0' && m[firIndex - 2] == '0' && m[firIndex - 1] == '0') {
test(m[firIndex - 4]);
test3(4);
} else if (m[firIndex - 4] == '0' && m[firIndex - 3] == '0') {
test3(1);
test(m[firIndex - 2]);
test3(2);
test(m[firIndex - 1]);
} else if (m[firIndex - 4] == '0' && m[firIndex - 2] == '0') {
test3(1);
test(m[firIndex - 3]);
test3(3);
test3(1);
test(m[firIndex - 1]);
} else if (m[firIndex - 4] == '0' && m[firIndex - 1] == '0') {
test3(1);
test(m[firIndex - 3]);
test3(3);
test(m[firIndex - 2]);
test3(2);
} else if (m[firIndex - 3] == '0' && m[firIndex - 2] == '0') {
test(m[firIndex - 4]);
test3(4);
test3(1);
test(m[firIndex - 1]);
} else if (m[firIndex - 3] == '0' && m[firIndex - 1] == '0') {
test(m[firIndex - 4]);
test3(4);
test(m[firIndex - 2]);
test3(2);
} else if (m[firIndex - 2] == '0' && m[firIndex - 1] == '0') {
test(m[firIndex - 4]);
test3(4);
test(m[firIndex - 3]);
test3(3);
} else if (m[firIndex - 4] == '0') {
test3(1);
test(m[firIndex - 3]);
test3(3);
test(m[firIndex - 2]);
test3(2);
test(m[firIndex - 1]);
} else if (m[firIndex - 3] == '0') {
test(m[firIndex - 4]);
test3(4);
test3(1);
test(m[firIndex - 2]);
test3(2);
test(m[firIndex - 1]);
} else if (m[firIndex - 2] == '0') {
test(m[firIndex - 4]);
test3(4);
test(m[firIndex - 3]);
test3(3);
test3(1);
test(m[firIndex - 1]);
} else if (m[firIndex - 2] == '0') {
test(m[firIndex - 4]);
test3(4);
test(m[firIndex - 3]);
test3(3);
test(m[firIndex - 2]);
test3(2);
} else {
test(m[firIndex - 4]);
test3(4);
test(m[firIndex - 3]);
test3(3);
test(m[firIndex - 2]);
test3(2);
test(m[firIndex - 1]);
}
}
public static void test3(int n) {
if (n == 1) {
System.out.print("零");
} else if (n == 2) {
System.out.print("拾");
} else if (n == 3) {
System.out.print("佰");
} else if (n == 4) {
System.out.print("仟");
} else if (n == 5) {
System.out.print("万");
} else if (n == 6) {
System.out.print("角");
} else if (n == 7) {
System.out.print("分");
} else if (n == 8) {
System.out.print("整");
}
}
}