今天面试。给了我一个面试题
将金额变为文字
package com.howbuy;
/**
* 转换 金额
* @author SHUHIYUN
*
*/
public class HowBuy {
private String result1;
private String result2;
String[] a = {"零","一","二","三","四","五","六","七","八","九"};
String[] b={"十","百","千"};
String[] c={"万","亿"};
public String[] spilitByPoint(String number) throws Exception {
String[] num=null;
try{
Double.valueOf(number).toString();
}catch(Exception e ){
throw new Exception("不是数字");
}
try{
num=number.split("//.");
}catch(Exception e ){
}
num[0]=Integer.valueOf(num[0]).toString();
if(num==null||num.length==0){
throw new Exception ("");
}
return num;
}
public String execute(String number)throws Exception{
String[] temp = spilitByPoint(number);
executeMoney1(temp[0]);
try{
if(temp[1]==null){
executeMoney2(null);
}else {
executeMoney2(temp[1]);
}
}catch(Exception e ){
executeMoney2(null);
}
return this.result1+this.result2;
}
public void executeMoney2(String number)throws Exception{
if(number==null){
this.result2="元整";
}else{
this.result2="元";
this.result2 = this.result2+ a[Integer.valueOf(number.substring(0,1))]+"角";
try{
if(Integer.valueOf(number.substring(1,2))!=0){
this.result2 = this.result2+ a[Integer.valueOf(number.substring(1,2))]+"分";;
}
}catch(Exception e){
e.printStackTrace();
}
}
}
public void executeMoney1(String number)throws Exception{
if(Integer.parseInt(number)<10){
this.result1=executeG(number);
}
else if(Integer.parseInt(number)<100){
this.result1=executeS(number);
}
else if(Integer.parseInt(number)<1000){
this.result1=executeB(number);
}
else if(Integer.parseInt(number)<10000){
this.result1=executeQ(number);
} else {
if(Integer.parseInt(number)<100000000){
this.result1=executeSW(number);
} else
this.result1=executeYI(number);
}
}
private String executeW(String number) {
String temp = a[Integer.parseInt(number.substring(0,1))]+b[2];
if(Integer.parseInt(number.substring(1))>=100){
temp+=executeQ(number.substring(1));
}else if(Integer.parseInt(number.substring(1))>10){
temp+=executeB(number.substring(1));
}else{
if(Integer.parseInt(number.substring(2))!=0){
if(Integer.parseInt(number.substring(1))>10)
temp+=a[Integer.parseInt(number.substring(2))];
else temp+=a[0]+a[Integer.parseInt(number.substring(2))];
}
}
return temp;
}
// private String executeT(String number){
// String temp =null;
// try{
// if(Integer.parseInt(number)<10){
// temp=a[Integer.parseInt(number)];
// }else if(Integer.parseInt(number)<100){
// temp = a[Integer.parseInt(number.substring(0,1))]+b[1];
// if(Integer.parseInt(number.substring(1,2))!=0){
// temp+= a[Integer.parseInt(number.substring(1,2))];
// }
// }else if(Integer.parseInt(number)<1000){
// temp = a[Integer.parseInt(number.substring(0,1))]+b[2];
// if(Integer.parseInt(number.substring(1,2))!=0){
// temp+= a[Integer.parseInt(number.substring(1,2))];
// }
// }else if(Integer.parseInt(number)<10000){
// temp = a[Integer.parseInt(number.substring(0,1))]+b[3];
// }
// }catch(Exception e ){
// e.printStackTrace();
// }
// return temp;
// }
private String executeG(String number){//ge
return a[Integer.parseInt(number)];
}
private String executeS(String number){//shi
String temp = a[Integer.parseInt(number.substring(0,1))]+b[0];
if(Integer.parseInt(number.substring(1))!=0){
temp+=a[Integer.parseInt(number.substring(1))];
}
return temp;
}
private String executeB(String number){//bai
String temp = a[Integer.parseInt(number.substring(0,1))]+b[1];
if(Integer.parseInt(number.substring(1))>=10)
temp+=executeS(number.substring(1));
else if(Integer.parseInt(number.substring(1))!=0){
temp+=a[0]+executeG(number.substring(1));
}
return temp;
}
private String executeQ(String number){
String temp = a[Integer.parseInt(number.substring(0,1))]+b[2];
if(Integer.parseInt(number.substring(1))>=100){
temp+=executeB(number.substring(1));
}else if(Integer.parseInt(number.substring(1))>=10){
temp+=a[0]+executeS(number.substring(2));
}else{
if(Integer.parseInt(number.substring(2))!=0){
if(Integer.parseInt(number.substring(1))>10)
temp+=a[Integer.parseInt(number.substring(2))];
else temp+=a[0]+a[Integer.parseInt(number.substring(2))];
}
}
return temp;
}
private String executeSW(String number){
String shiwang= number.substring(0,number.length()-4);
String temp ="";
if(Integer.parseInt(shiwang)<10){
temp=this.executeG(shiwang);
}else if(Integer.parseInt(shiwang)<100){
temp=this.executeS(shiwang);
}
else if(Integer.parseInt(shiwang)<1000){
temp=this.executeB(shiwang);
}else if(Integer.parseInt(shiwang)<10000){
temp=this.executeQ(shiwang);
}
temp+=c[0];
String qian=number.substring(number.length()-4);
if(Integer.parseInt(qian)>=1000)
temp+=executeQ(qian);
else if(Integer.parseInt(qian)>=100){
temp+=a[0]+executeB(qian.substring(1));
}else if(Integer.parseInt(qian)>=10){
temp+=a[0]+executeS(qian.substring(2));
}else if(Integer.parseInt(qian)>0){
temp+=a[0]+executeG(qian.substring(3));
}
return temp;
}
private String executeYI(String number) {// yi
String yibufeng = number.substring(0,number.length()-8);
String temp ="";
if(Integer.parseInt(yibufeng)<10){
temp=this.executeG(yibufeng);
}else if(Integer.parseInt(yibufeng)<100){
temp=this.executeS(yibufeng);
}
else if(Integer.parseInt(yibufeng)<1000){
temp=this.executeB(yibufeng);
}else if(Integer.parseInt(yibufeng)<10000){
temp=this.executeQ(yibufeng);
}
temp+=c[1];
String wang=number.substring(number.length()-8);
// if(Integer.parseInt(number.substring(number.length()-8,number.length()-7))==0){
// temp+=a[0];
// }
if(Integer.parseInt(wang)>=10000){
temp+=this.executeSW(Integer.toString(Integer.parseInt(wang)));
}else if(Integer.parseInt(wang)>=1000)
temp+=a[0]+executeQ(Integer.toString(Integer.parseInt(wang)));
else if(Integer.parseInt(wang)>=100){
temp+=a[0]+executeB(Integer.toString(Integer.parseInt(wang)));
}else if(Integer.parseInt(wang)>=10){
temp+=a[0]+executeS(Integer.toString(Integer.parseInt(wang)));
}else if(Integer.parseInt(wang)>0)temp+=a[0]+executeG(Integer.toString(Integer.parseInt(wang)));
return temp;
}
public static void main(String[] a ){
// String number = "200010090";
HowBuy howBuy = new HowBuy();
// try{
// System.out.print(howBuy.execute(number));
// }catch(Exception e ){
// e.printStackTrace();
// }
try{
int j=0;
for(int i=1;i<11;i++){
for(;j<1000;){
String temp = Integer.valueOf(i*j).toString();
System.out.println(temp+":"+howBuy.execute(temp+".13"));
j=j+1;
}
}
}catch(Exception e ){
e.printStackTrace();
}
}
}