今天写了一个感觉还算有点意思的东西,拿出来分享一下。个人原创,如有雷同纯属巧合。
代码比较的少,总共有两个类DigitalConverter.java 和MainActivity.java;功能实现在DigitalConverter.java这个类里面。下面把完整代码贴出来:
/----------------------------------------代码直接复制可用-------------------------------------------------------------------------------------------------------------------/
package com.example.administrator.myapplication; import android.text.TextUtils; import android.util.Log; import java.util.HashMap; import java.util.Map; public class DigitalConverter { String mRex[]={"亿","万","千","百","十"}; Map<String,Long> map=new HashMap<String,Long>(); public String mCompany="一",mFatherCompany,mValue1,mValue2; public long mSum=0; public DigitalConverter mNumber1,mNumber2; boolean mIsNew=false; public DigitalConverter(String number, String fatherCompany){ mFatherCompany=fatherCompany; initRex(); if(TextUtils.isEmpty(number)){ mSum=0; }else{ if(number.length()==1){ mSum=map.get(number); }else{ mCompany= getCompany(number); if(mFatherCompany==""){ mFatherCompany=mCompany; mIsNew=true; } int index=number.indexOf(mCompany); mValue1=number.substring(0,index); mValue2=number.substring(index+1,number.length()); if(!TextUtils.isEmpty(mValue1)){ if(mValue1.trim().length()==1){ if(mIsNew){ mSum+=(map.get(mValue1.trim()))*map.get(mCompany); }else{ mSum+=(map.get(mValue1))*map.get(mCompany)*map.get(mFatherCompany); } }else{ mNumber1=new DigitalConverter(mValue1,mFatherCompany); } } if(!TextUtils.isEmpty(mValue2)){ if(mValue2.trim().length()==1){ if(mIsNew){ mSum+=map.get(mValue2.trim()); }else{ mSum+=map.get(mValue2.trim())*map.get(mFatherCompany); } }else{ if(mIsNew){ mNumber2=new DigitalConverter(mValue2,""); }else{ mNumber2=new DigitalConverter(mValue2,mFatherCompany); } } } } } } private String getCompany(String value){ for(int i=0;i<mRex.length;i++){ if(value.contains(mRex[i])){ return mRex[i]; } } return null; } private void initRex(){ map.put("零",0L); map.put("一",1L); map.put("二",2L); map.put("两",2L); map.put("三",3L); map.put("四",4L); map.put("五",5L); map.put("六",6L); map.put("七",7L); map.put("八",8L); map.put("九",9L); map.put("十",10L); map.put("百",100L); map.put("千",1000L); map.put("万",10000L); map.put("亿",100000000L); } public long getSum(){ if(null!=mNumber1){ mSum+=mNumber1.getSum(); } if(null!=mNumber2){ mSum+=mNumber2.getSum(); } return mSum; } } /----------------------------------------------测试代码---------------------------------------------/package com.example.administrator.myapplication; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.TextView; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); String numberS="九万九千九百九十九亿三千五百二十一万三千三百二十一"; DigitalConverter numberObj=new DigitalConverter(numberS,""); long number= numberObj.getSum(); setContentView(R.layout.activity_main); TextView view=(TextView)findViewById(R.id.show); view.setText(number+""); } }