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{
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 {
if(StrMapInt(sMoney.substring(index, index+1))==0)
{
index++;
continue;
}

if((index+1) {
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');
  }

}

你可能感兴趣的:(others,java)