再几天就元旦了  祝大家元旦快乐
   
  哎,眼看就毕业了,工作还没着落啊,长沙的IT公司少啊……去外面闯一个人又觉得恐惧啊……
 
  明年来希望找个好工作啊^^! 哦弥陀哦佛……哎生活不易啊!!!import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
import java.util.regex.Matcher;
import java.util.regex.Pattern;public class ArabToChinese {
public Stack<String>stack;
public ArabToChinese(){
stack=new Stack<String>();
}
public void pushToStack(Stack<String>stack,char c){
switch(c){
case '0':
stack.push("零");
break;
case '1':
stack.push("壹");
break;
case '2':
stack.push("贰");
break;
case '3':
stack.push("叁");
break;
case '4':
stack.push("肆");
break;
case '5':
stack.push("伍");
break;
case '6':
stack.push("陆");
break;
case '7':
stack.push("柒");
break;
case '8':
stack.push("捌");
break;
case '9':
stack.push("玖");
break;
}
}
public void pushToStack_(Stack<String>stack,String s){
 int digit1=5;
 int digit2=9;
 int digit3=1;
for(int i=s.length()-1,j=0,k=0;i>=0;i--){
 char c=s.charAt(i);
 j++;
 k++;
 if(k==2){
 stack.push("拾");
 }
 else if(k==3){
 stack.push("佰");
 }
 else if(k==4){
 stack.push("仟");
 k=0;
 }
 if(j==digit1){
 stack.push("萬");
 digit1+=8;
 }
 if(j==digit2){
 stack.push("亿");
 digit2+=8;
 }
if(j==digit3&&c=='0') {
digit3+=4;
continue;
}
else pushToStack(stack,c);
 }
}

public String popToString(Stack<String>stack){
String s="";
StringBuffer buffer=new StringBuffer();
while(stack.empty()==false){
buffer.append((String)stack.pop());
}
s=buffer.toString();
s=s.replaceAll("零仟","零");
s=s.replaceAll("零佰","零");
s=s.replaceAll("零拾","零");
s=s.replaceAll("[零]+","零");
s=s.replaceAll("零萬","萬");
s=s.replaceAll("零亿","亿");
s=s.replace("零角","");
    s=s.replace("零分","");
return s;
}

 public static void main(String args[]) throws IOException{
 boolean available=false;  
 String s="";
 String s1="";
 System.out.print("请输入一个数字:");
 while(!available){
 BufferedReader buffer;
 buffer=new BufferedReader(new InputStreamReader(System.in));
 s=buffer.readLine();
 Pattern pattern=Pattern.compile("^[^0][0-9]+(.[0-9]{1,2})$");
 Matcher matcher=pattern.matcher(s);
 boolean isMatched=matcher.find();
 if(isMatched==true){
  available=true;
 }
 else System.out.println("你输入的数字有错误,请重新输入:");
 }
 ArabToChinese atc=new ArabToChinese();
 int index=s.indexOf('.');
 
 if(index!=-1){
    s1=s.substring(index+1); 
s=s.substring(0,index);
atc.pushToStack_(atc.stack, s);
s=atc.popToString(atc.stack)+"圆";
if(s1.length()==1){
s1=s1+"0";
}
  for(int i=1,j=0;i>=0;i--){
  char c=s1.charAt(i);
  j++; 
  if(j==1){
  atc.stack.push("分");
  }
  if(j==2){
  atc.stack.push("角");
  }
  atc.pushToStack(atc.stack,c);
  }
  
  
  s1=atc.popToString(atc.stack);
  System.out.println("转换后的金钱数字为:"+s+s1);
 }
 else {atc.pushToStack_(atc.stack,s);
       s=atc.popToString(atc.stack)+"圆";
       s=s.replace("零圆","圆");
       System.out.println("转换后的金钱数字为:"+s);
   }
  }
 }
public class ChineseToArabDigit {
   public static void main(String args[]){
    long num_Buffer=0;
    long num_add=0;
    long num_mutiply=0;
    long result_yi=0;
    long result_wan=0;
    
    char c1='圆';
    String s="壹亿亿圆";
  //  String s="叁仟柒佰贰拾壹萬贰仟叁佰柒拾壹亿捌仟贰佰柒拾叁萬壹仟贰佰捌拾壹圆";
    int index=s.indexOf('圆');
    s=s.substring(0,index);
    for(int i=0;i<s.length();i++){
    char c=s.charAt(i);
    int index_lastyi=s.lastIndexOf('亿');
    if(i!=s.length()-1){
    c1=s.charAt(i+1);
    }
    switch(c){
    case '零':
     num_Buffer=0;  
     break;
    case '壹':
       num_Buffer=1;
       if(c1=='萬'||c1=='亿'||i==s.length()-1){
          num_add+=1; 
      }
       break;
    case '贰':
     num_Buffer=2;
      if(c1=='萬'||c1=='亿'||i==s.length()-1){
          num_add+=2; 
      }
     break;
    case '叁':
     num_Buffer=3;
      if(c1=='萬'||c1=='亿'||i==s.length()-1){
          num_add+=3; 
      }
     break;
    case '肆':
     num_Buffer=4;
      if(c1=='萬'||c1=='亿'||i==s.length()-1){
          num_add+=4; 
      }
     break;
    case '伍':
     num_Buffer=5;
      if(c1=='萬'||c1=='亿'||i==s.length()-1){
          num_add+=5; 
      }
     break;
    case '陆':
     num_Buffer=6;
      if(c1=='萬'||c1=='亿'||i==s.length()-1){
          num_add+=6; 
      }
     break;
    case '柒':
     num_Buffer=7;
      if(c1=='萬'||c1=='亿'||i==s.length()-1){
          num_add+=7; 
      }
     break;
    case '捌':
     num_Buffer=8;
      if(c1=='萬'||c1=='亿'||i==s.length()-1){
          num_add+=8; 
      }
     break;
    case '玖':
     num_Buffer=9;
      if(c1=='萬'||c1=='亿'||i==s.length()-1){
          num_add+=9; 
      }
     break;
    
/**************************************/     
    case '拾':
     num_add+=10*num_Buffer;
     break;
    case '佰':
     num_add+=100*num_Buffer;
     break;
    case '仟' :
     num_add+=1000*num_Buffer;
     break;
/****************************************/     
    case '萬':
     if(index_lastyi!=-1&&i<index_lastyi){
     num_mutiply=num_add*10000;
     }
     else if(index_lastyi==-1||i>index_lastyi){
     result_wan=num_add*10000;
     }
     num_add=0;
     break;
    case '亿':
     num_mutiply=(num_mutiply+num_add)*100000000;
     result_yi=num_mutiply;
     num_add=0;
     break;
    }
    }
    System.out.println(result_yi+result_wan+num_add);
   }
}

解决方案 »

  1.   


    http://www.blogjava.net/majianan/archive/2006/10/16/75431.html
      

  2.   


    PS: 
    我的目标是 ----> ^_^
      

  3.   

    不错呀
    我也做过,面试的时候碰到的一个机试。
    没你那么完整!
    up
    up
      

  4.   

    写点有技术含量的JAVA代码出来```` 必须QQ 类似
      

  5.   

    超漂亮的asp个人主页全站源码内容:
     为了感谢广大网友一直以来对夜末工作室的支持,并且在寒假和春节即将来临之季“夜末工作室”将“夜末流离asp全站源码优化后完全免费下载使用。
    夜末流离演示地址:http://www.y-mo.cn/vip
    夜末流离下载地址:http://www.y-mo.cn/Download_view.asp?id=2077
      

  6.   

    用的是java写的,给楼主顶上!
      

  7.   

    自己又改了下 import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.Stack;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;public class ArabToChinese {
    public Stack<String>stack;
    public ArabToChinese(){
    stack=new Stack<String>();
    }
    public void pushToStack(Stack<String>stack,char c){
    switch(c){
    case '0':
    stack.push("零");
    break;
    case '1':
    stack.push("壹");
    break;
    case '2':
    stack.push("贰");
    break;
    case '3':
    stack.push("叁");
    break;
    case '4':
    stack.push("肆");
    break;
    case '5':
    stack.push("伍");
    break;
    case '6':
    stack.push("陆");
    break;
    case '7':
    stack.push("柒");
    break;
    case '8':
    stack.push("捌");
    break;
    case '9':
    stack.push("玖");
    break;
    }
    }
    public void pushToStack_(Stack<String>stack,String s){
     int digit1=5;
     int digit2=9;
     int digit3=1;
    for(int i=s.length()-1,j=0,k=0;i>=0;i--){
     char c=s.charAt(i);
     j++;
     k++;
     if(k==2){
     stack.push("拾");
     }
     else if(k==3){
     stack.push("佰");
     }
     else if(k==4){
     stack.push("仟");
     k=0;
     }
     if(j==digit1){
     stack.push("萬");
     digit1+=8;
     }
     if(j==digit2){
     stack.push("亿");
     digit2+=8;
     }
    if(j==digit3&&c=='0') {
    digit3+=4;
    continue;
    }
    else pushToStack(stack,c);
     }
    }

    public String popToString(Stack<String>stack){
    String s="";
    StringBuffer buffer=new StringBuffer();
    while(stack.empty()==false){
    buffer.append((String)stack.pop());
    }
    s=buffer.toString();
    s=s.replaceAll("零仟","零");
    s=s.replaceAll("零佰","零");
    s=s.replaceAll("零拾","零");
    s=s.replaceAll("[零]+","零");
    s=s.replaceAll("零萬","萬");
    s=s.replaceAll("零亿","亿");
    s=s.replaceAll("亿萬","亿");
    s=s.replace("零角","");
        s=s.replace("零分","");
    return s;
    }

     public static void main(String args[]) throws IOException{
     boolean available=false;  
     String s="";
     String s1="";
     System.out.print("请输入一个数字:");
     while(!available){
     BufferedReader buffer;
     buffer=new BufferedReader(new InputStreamReader(System.in));
     s=buffer.readLine();
     Pattern pattern=Pattern.compile("^[^0][0-9]+(.[0-9]{1,2})$");
     Matcher matcher=pattern.matcher(s);
     boolean isMatched=matcher.find();
     if(isMatched==true){
      available=true;
     }
     else System.out.println("你输入的数字有错误,请重新输入:");
     }
     ArabToChinese atc=new ArabToChinese();
     int index=s.indexOf('.');
     
     if(index!=-1){
        s1=s.substring(index+1); 
    s=s.substring(0,index);
    atc.pushToStack_(atc.stack, s);
    s=atc.popToString(atc.stack)+"圆";
    if(s1.length()==1){
    s1=s1+"0";
    }
      for(int i=1,j=0;i>=0;i--){
      char c=s1.charAt(i);
      j++; 
      if(j==1){
      atc.stack.push("分");
      }
      if(j==2){
      atc.stack.push("角");
      }
      atc.pushToStack(atc.stack,c);
      }
      
      
      s1=atc.popToString(atc.stack);
      System.out.println("转换后的金钱数字为:"+s+s1);
     }
     else {atc.pushToStack_(atc.stack,s);
           s=atc.popToString(atc.stack)+"圆";
           s=s.replace("零圆","圆");
           System.out.println("转换后的金钱数字为:"+s);
       }
      }
     }
      

  8.   

    学java的时候做过这样的一个实验!
      

  9.   

     方法已经测试,方法 ArabToChinese 中,当输入1位或2位数字时,会输出 你输入的数字有错误,请重新输入 
     我改了一下楼主的正则,可以满足输入1位或2位..
     代码如下:
     Pattern pattern = Pattern.compile("^[^0]?[0-9]+.?[0-9]{0,2}$");
     Matcher matcher = pattern.matcher(s);
     boolean isMatched = matcher.find();
     楼主正则为: Pattern pattern=Pattern.compile("^[^0][0-9]+(.[0-9]{1,2})$");