java数字切换成中文(支持万位以下)
因为公司有一个业务逻辑是将数字切换成相应的中文并进行展示,正好现在闲下来自己试了一下写了一段java代码实现了,只做到万位一下正好够公司的业务逻辑使用,第一次写博客,也算开始了第一步,代码写的不够全面,如果有幸看到了请指正。
- 主要是先算出各个位数上的数字,然后根据不同的情况进行拼接
- 话不多说,直接看代码把
代码块
public class example
{
static String Str[] =
{"","一","二","三","四","五","六","七","八","九","十","百","千","万"};
public static void main(String args[])
{
System.out.println(returnStr(1101));
}
public static String returnStr(int str)
{
// 1-10
if(str <= 10)
{
return Str[str];
}
// 11-99
else if(str < 100)
{
if(str / 10 > 1)
{
return new StringBuilder().append(Str[(str - str % 10) / 10]).append(Str[10]).append(Str[str % 10]).toString();
}
else
{
return new StringBuilder().append(Str[str - str / 10]).append(Str[str / 10]).toString();
}
}
// 100-999
else if(str < 1000)
{
// 先算出百十个位的数字,然后根据不同情况进行拼接
String baiStr = Str[(str - str % 100) / 100];
String shiStr = Str[str % 100 / 10];
String geStr = Str[str % 10];
// 如果十位为0个位、不为0,则显示几百零几
if(shiStr == "" && geStr != "")
{
return new StringBuffer().append(baiStr).append(Str[11]).append("零").append(geStr).toString();
}
// 如果十位个位都为空,即十位个位数都为0,则显示几百
else if(shiStr == "" && geStr == "")
{
return new StringBuffer().append(baiStr).append(Str[11]).toString();
}
// 如果十位个位都不为0,则显示几百几十几
else
{
return new StringBuffer().append(baiStr).append(Str[11]).append(shiStr).append(Str[10]).append(geStr).toString();
}
}
// 1000-9999
else if(str < 10000)
{
// 先算出千位百位十位个位数字,根据不同情况进行拼接
String qianStr = Str[(str - str % 1000) / 1000];
String baiStr = Str[(str % 1000 - str % 1000 % 100) / 100];
String shiStr = Str[str % 100 / 10];
String geStr = Str[str % 10];
// 首先进行百位是否为0的判断
// 当百位为0时
if(baiStr == "")
{
// 如果十位为0、个位不为0,则显示几千零几
if(shiStr == "" && geStr != "")
{
return new StringBuffer().append(qianStr).append(Str[12]).append("零").append(geStr).toString();
}
// 如果十位为0、个位为0,则显示几千
else if(shiStr == "" && geStr == "")
{
return new StringBuffer().append(qianStr).append(Str[12]).toString();
}
// 如果十位不为0,则显示几千零几十几
else
{
return new StringBuffer().append(qianStr).append(Str[12]).append("零").append(shiStr).append(Str[10]).append(geStr).toString();
}
}
//如果百位不为0
else
{
//如果十位为0、个位不为0,则显示几千几百零几
if(shiStr == "" && geStr != "")
{
return new StringBuffer().append(qianStr).append(Str[12]).append(baiStr).append(Str[11]).append("零").append(geStr).toString();
}
//如果十位个位都为零,则显示几千几百
else if(shiStr == "" && geStr == "")
{
return new StringBuffer().append(qianStr).append(Str[12]).append(baiStr).append(Str[11]).toString();
}
//如果十位个位都不为0,则显示几千几百几十几
else
{
return new StringBuffer().append(qianStr).append(Str[12]).append(baiStr).append(Str[11]).append(shiStr).append(Str[10]).append(geStr).toString();
}
}
}
return null;
}
如果有更好的方法,也可以在下面留言的。
第一次写博客,有点小激动啊。