ORACLE数据库定义的时number(15,3)我写进数据库时,要检查长度不能超过16位
整数部分不能超过12
小数不能超过3用户输入的也可能没有小数各位老大帮写个检查的函数
谢谢!!!!!!!!!

解决方案 »

  1.   

    用StringTokenizer类
    小数点.作为分隔符
    将读到的的数分为整数和小数两部分,然后分别用length()判断就可以了
    当然在一开始要进行输入数的合法性检验
      

  2.   


        public double NumCheck(double f){
            Double ff=new Double(f);
            String s=ff.toString();
            int i=(int)'.';
            int index=s.indexOf(i);
            String IntSub=s.substring(0,index);
            String douSub=s.substring(index+1);
            if(IntSub.length()<16&&douSub.length()<3){
                return f; 
            }
            return 0;
        }
      

  3.   

    楼上的方法显然不对,假如没有小数,你的index是-1,substring明显会出错
      

  4.   

    //数字的合法性可以用正则式判断import java.util.*;public class StringTokenizerDemo {
    public static void main(String args[]){
    String str = "13434.231";
    StringTokenizer st = new StringTokenizer(str,".");
    boolean pass = st.nextToken().length()<=12;
    pass = st.nextToken().length()<=3;
    System.out.println(pass);
    }
    }
      

  5.   

    TO Feng如果没有小数点的情况可以判的出来吗
    例如String str = "13434";
    谢谢了!!
      

  6.   

    import java.util.*;public class StringTokenizerDemo {
    public static void main(String args[]){
    String str = "13434";
    StringTokenizer st = new StringTokenizer(str,".");
    boolean pass = true;
    pass = st.nextToken().length()<=12;

    if(st.hasMoreTokens()) //这里加一句,反正合法的数字就这两种情况
    pass = st.nextToken().length()<=3;

    System.out.println(pass);
    }
    }
      

  7.   

    To believefym我测试一下谢谢!
      

  8.   

    To believefym为何到这句的时候就会爆掉(DEBUG状态)pass = st.nextToken().length()<=12;
      

  9.   

    //我这边没问题,上面的程序有问题的,下面的看看import java.util.*;public class StringTokenizerDemo {
    public static void main(String args[]){
    String str = "13434";
    StringTokenizer st = new StringTokenizer(str,".");
    boolean pass1 = true,pass2=true;

    pass1 = st.nextToken().length()<=12;

    if(st.hasMoreTokens())
    pass2 = st.nextToken().length()<=3;

    System.out.println(pass1 && pass2);
    }
    }
      

  10.   

    private static boolean checkNumber(String str,int intMaxLength,int pointMaxLength){
        StringTokenizer st = new StringTokenizer(str);
        String[] sp = {"",""};
        int i = 0;
        while(st.hasMoreElements()){
          sp[i] = st.nextToken(".");   
          i++;
        }
        if(sp[0].length() > intMaxLength){
          return false;
        }
        if(sp[1].length() > pointMaxLength){
          return false;
        }
        return true;
      }
      

  11.   

    String str = "1234567890.1234";
        System.err.println(checkNumber(str,10,5));
      

  12.   

    intMaxLength  整数的位数 pointMaxLength 小数的位数
    private static boolean checkNumber(String str,int intMaxLength,int pointMaxLength)
      

  13.   

    TO Huangdeji其它情况都可以检查出来,但是".00000",就检测不出来
      

  14.   

    private static boolean checkNumber(String str,int intMaxLength,int pointMaxLength){
        if(str.indexOf(".") == 0){
          StringBuffer sb = new StringBuffer(str);
          sb.insert(0,"0");
          str = sb.toString();
        }
        StringTokenizer st = new StringTokenizer(str);
        String[] sp = {"",""};
        int i = 0;
        while(st.hasMoreElements()){
          sp[i] = st.nextToken(".");   
          i++;
        }
        if(sp[0].length() > intMaxLength){
          return false;
        }
        if(sp[1].length() > pointMaxLength){
          return false;
        }
        return true;
      }
      

  15.   

    eform自定义表单平台是一个在IE浏览器中可视化的设计软件界面的工具。无论是输入界面还是报表界面,无论是简单的输入查询还是复杂的逻辑处理。都可以由eform设计出来。 
     
         eform自定义表单平台适用于网上OA系统的自定义表单模块,工作流系统的自定义表单模块,信息管理系统方面的软件开发项目等等。 
      

  16.   

    TO
        huangdejiTO  believefym(feng) TO  zzit_antTO  redspider9999谢谢各位!!!!