实现这个java程序的关键就是把一个4位数字字符串转换成一个中文读法。下面程序把这个需求实现了一点: 85
两个零连在一起时该如何处理呢?如果最高位是零如何处理呢?最低位是零又如何处理呢?因此这个程序还需要继续完善,希望读者能把这个程序写完。我想来想去都没搞懂希望大神能帮我解决...
两个零连在一起时该如何处理呢?如果最高位是零如何处理呢?最低位是零又如何处理呢?因此这个程序还需要继续完善,希望读者能把这个程序写完。 我想来想去都没搞懂 希望大神能帮我解决下 ,,别用String()里面那个方法 治标不治本 ,,
public class Num2Rmb
{
private String[] hanArr = {"零" , "壹" , "贰" , "叁" , "肆" ,
"伍" , "陆" , "柒" , "捌" , "玖"};
private String[] unitArr = {"拾" , "佰" , "仟"};
/**
* 把一个浮点数分解成整数部分和小数部分字符串
* @param num 需要被分解的浮点数
* @return 分解出来的整数部分和小数部分。第一个数组元素是整数部分,第二个数组元素是小数部分
*/
private String[] divide(double num)
{
//将一个浮点数强制类型转换为long,即得到它的整数部分
long zheng = (long)num;
//浮点数减去整数部分,得到小数部分,小数部分乘以100后再取整得到两位小数
long xiao = Math.round((num - zheng) * 100);
//下面用了两种方法把整数转换为字符串
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;
}
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"));
}
} 展开
public class Num2Rmb
{
private String[] hanArr = {"零" , "壹" , "贰" , "叁" , "肆" ,
"伍" , "陆" , "柒" , "捌" , "玖"};
private String[] unitArr = {"拾" , "佰" , "仟"};
/**
* 把一个浮点数分解成整数部分和小数部分字符串
* @param num 需要被分解的浮点数
* @return 分解出来的整数部分和小数部分。第一个数组元素是整数部分,第二个数组元素是小数部分
*/
private String[] divide(double num)
{
//将一个浮点数强制类型转换为long,即得到它的整数部分
long zheng = (long)num;
//浮点数减去整数部分,得到小数部分,小数部分乘以100后再取整得到两位小数
long xiao = Math.round((num - zheng) * 100);
//下面用了两种方法把整数转换为字符串
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;
}
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"));
}
} 展开
展开全部
public class RenMingBi {
private static final char[] data = new char[] { '零', '壹', '贰', '叁', '肆',
'伍', '陆', '柒', '捌', '玖' };
private static final char[] units = new char[] { '元', '拾', '佰', '仟', '万',
'拾', '佰', '仟', '亿' };
public static void main(String[] args) {
System.out.println(convert(135689123));
}
public static String convert(int money) {
StringBuffer sbf = new StringBuffer();
int unit = 0;
while (money != 0) {
sbf.insert(0, units[unit++]);
int number = money % 10;
sbf.insert(0, data[number]);
money /= 10;
}
return sbf.toString();
}
}
追问
不行阿
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询