作为java新手写的一个小程序,主要是练习String的用法,欢迎各位提出宝贵意见。
//将大写的数字转换为阿拉伯数字
//例如“叁仟肆佰捌拾陆”转换为3486;“叁仟壹佰伍拾柒”转换为3157;“肆仟零伍”转换为4005//要求转换的数字不会超过9999
public class MoneyChange {
static int nMoney;
static String sMoney;
String strNum="零壹贰叁肆伍陆柒捌玖拾佰仟";
MoneyChange(String Money)
{
nMoney = 0;
sMoney = new String(Money);
/*这段是测试汉字字符的长度
int len = strNum.length();
int index = 0;System.out.println("十个大写的长度是"+len);
while(index<len)
{
System.out.println("第"+index+"个数字是"+strNum.substring(index, index+1));
index++;
}
*/
}void MygetNum()
{
if(sMoney!=null)
{
change();
}
}
void change()
{
int len , index;
len = sMoney.length();
index = 0;
while(index<len)
{
if(StrMapInt(sMoney.substring(index, index+1))==0)
{
index++;
continue;
}
if((index+1)<len)
{
nMoney = nMoney + StrMapInt(sMoney.substring(index, index+1))*StrMapInt(sMoney.substring(index+1, index+2));
}
else
nMoney = nMoney + StrMapInt(sMoney.substring(index, index+1));
index = index+2;
}
}
int StrMapInt(String Num)
{
int index = strNum.indexOf(Num);
if(index<10)
return index;
else
{
int i = index-9;
int result = 1;
while(i>0)
{
result = 10*result;
i--;
}
return result;
}
}
public static void main(String arg[])
{
MoneyChange mc = new MoneyChange("肆仟零伍");
mc.MygetNum();
System.out.println(sMoney+"="+nMoney+'\n');
}
}