首页 > 代码库 > valid bank money number

valid bank money number

一直对这种题比较没把握. 没有思路. 

i

1,000,000.22

34,333.999

define valid(String s,boolean last,boolean first)

1.先s.trim();

if string==null or string.length==0 return false;

2.String[] t = s.spite(‘,‘);

得到几组数.  

if(t.length()==1)   valid(t[0],t,t)

else      for()

 

关于splite 函数  1,,  最后 s.length = 1   .  只有1留下了. 

 

 

 

 

需要考虑,, 情况!

最关键的是把所有情况先 写下来。按照图上的划分。考官也会十分清晰.

 

import java.util.ArrayList;import java.util.List;public class test {    /**     * @param args     */    public static Boolean isNum(String s){        if(s == null || s.length()==0)            return false;        s = s.trim();                //check the ,, situation         String[] t = s.split(",");        int comcount = 0;        for(int i=0;i<t.length;i++){            if(s.charAt(i)==‘,‘)                comcount++;        }        if(t.length!=comcount+1)            return false;                if(t.length==1)            return Valid(t[0], true, true);        else         {            for(int i=0; i< t.length;i++){                if(i==0){                    if(!Valid(t[i], true, true))                        return false;                }                else if(i==(t.length-1)){                    if(!Valid(t[i],false,true))                        return false;                }else{                    if(!Valid(t[i],false,false))                        return false;                }                            }        }        return true;    }//    //effective fractional 100.222222//    public static boolean Valid2(String s){//        if(s.length() == 0)//            return false;//    }//        public static Boolean Valid(String s, boolean f, boolean l){        if(f){                                //+10234  -00234            if(s.length()>0 && (s.charAt(0)==‘-‘ || s.charAt(0)==‘+‘))                s = s.substring(1);            char[] arr = s.toCharArray();            if(arr.length==0)                return false;            int indexDot = s.indexOf(".");            if(indexDot ==-1){                //23     333                if(s.length()>3)                    return false;            }else{                if(indexDot>3)                    return false;                for(int i=0;i<indexDot;i++){                    if(!check(s.charAt(i)))                        return false;                }                if(indexDot==s.length()-1)                    return false;                for(int i=indexDot+1;i<s.length();i++){                    if(!check(s.charAt(i)))                        return false;                }            }                                return true;        }        if(l){            if(s.length()<3)                return false;            for(int i=0;i<3;i++)            {                if(!check(s.charAt(i)))                    return false;            }                if(s.length()>3){                if(s.charAt(3)!=‘.‘)                    return false;                for(int i=4;i<s.length();i++){                    if(!check(s.charAt(i)))                        return false;                }            }            return true;        }        // middle        if(s.length()!=3)                return false;        char[] arr = s.toCharArray();        for(int i=0;i<arr.length;i++){            if(!check(arr[i]))                    return false;        }                return true;    }        static boolean check(char c){        return (‘0‘ <= c && c <= ‘9‘);    }        public static void main(String[] args) {                String[]t = {",,","100,002",",000.3",                "+34444","9999.234324","234234",                "+56.234234","1,000,000,030.21231","-0.3242",                ".+99","1111.6",",999.3"                ,"+1,000,987.23444444444"                };        for(String c:t)        System.out.println(isNum(c));    }}

 

valid bank money number