java编写的汉字版数字转换为阿拉伯数字

作为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');
  }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值