例:
String a = "1235.2342";
String b = "782";
String c = "ss123";可以用下面进行判断是否是数值,但是能不能判断出 如果是数值,就返回是什么类型呢(int 或者 double)。//判断是否是字符
public static boolean isNum(String str){
    return str.matches("^[-+]?(([0-9]+)([.]([0-9]+))?|([.]([0-9]+))?)$");
}Stringjava判断intdouble

解决方案 »

  1.   

    判断是整数,
    public static boolean isDigits(String str) {
    return str.matches("[-+]?[0-9]*");
    }
      

  2.   


    /**
     * 判断字符串是否为数字
     * 
     * @param string
     * @return boolean
     */
    public static boolean isNumber(String string)
    {
    for (int i = 0; i < string.length(); i++)
    {
    if (!Character.isDigit(string.charAt(i)))
    {
    return false;
    }
    }
    return true;
    }
      

  3.   

    soory,我错了,坐看,自己算法比较笨
      

  4.   


    我想返回一个double 或者 int 的标记,直接判断出来的。例如:
    如果是 整形  return 1; 如果是 double return 2;  如果只是字符串  return 0;这样的。。能帮帮我么。
      

  5.   

    你不是都有俩方法了么,
    public static int checkString(String str) {
        if (isDigits(str))
            return 1;
        else if (isNum(str))
            return 2;
        else
            return 0;
    }
      

  6.   

    能判断出来是不是数值就好办了,如果不是数值就返回是字符串类型,如果是数值的话,你再利用indexOf(".")来判断是int 或者 double
      

  7.   

    不能用indexOf来判断。。万一字符串内容是  String d = "123.helloword.oracle.text.txt";
    就不能用indexOf来判断了。。
      

  8.   

    不能用indexOf来判断。。万一字符串内容是  String d = "123.helloword.oracle.text.txt";
    就不能用indexOf来判断了。。
    如果是数值的话,你再利用indexOf(".")来判断是int 或者 double,你这个就不是数值呀
      

  9.   

    不能用indexOf来判断。。万一字符串内容是  String d = "123.helloword.oracle.text.txt";
    就不能用indexOf来判断了。。
    你举的这个例子,它不是数值,不是直接返回是string类型了么,根本就不往下走了呀
      

  10.   

    不能用indexOf来判断。。万一字符串内容是  String d = "123.helloword.oracle.text.txt";
    就不能用indexOf来判断了。。
    如果是数值的话,你再利用indexOf(".")来判断是int 或者 double,你这个就不是数值呀
    呃。。是这样的  d="1992.04.06"  这样的。。不能用indexOf()来判断
      

  11.   

    不能用indexOf来判断。。万一字符串内容是  String d = "123.helloword.oracle.text.txt";
    就不能用indexOf来判断了。。
    如果是数值的话,你再利用indexOf(".")来判断是int 或者 double,你这个就不是数值呀
    呃。。是这样的  d="1992.04.06"  这样的。。不能用indexOf()来判断
    1992.04.06这个也不是数值吧?
      

  12.   

     /**
      * 正则表达式可能不严谨(写的比较唐突)
      * @param source
      * @return 返回0表示非数值,返回1表示是int型,返回2表示是double型
      */
     public static int type(String source){
     int result = 0;
     String regex1 = "^[-+]?(([0-9]+)([.]([0-9]+))?|([.]([0-9]+))?)$";
     boolean flag1 = source.matches(regex1);
     if(flag1){
     String regex2 = "^[-+]?([0-9]+)$";
     boolean flag2 = source.matches(regex2);
     if(flag2){
     result = 1;
     }
     else{
     result = 2;
     }
     }
     return result;  
     }
    楼主试试效果吧,写的比较唐突,在我这里实验,a,b,c三个字符串分别返回2,1,0 。
      

  13.   

    String str = "ss0.11";
    Pattern pattern = Pattern.compile("^-?[1-9]\\d*$");
    Matcher matcher = pattern.matcher(str);
    if(matcher.find()) {
        System.out.println("整形");
    }else if(Pattern.compile("^-?([1-9]\\d*\\.\\d*|0\\.\\d*[1-9]\\d*|0?\\.0+|0)$").matcher(str).find()){
    System.out.println("浮点型");
    }else {
    System.out.println("字符型");
    }
      

  14.   

    不能用indexOf来判断。。万一字符串内容是  String d = "123.helloword.oracle.text.txt";
    就不能用indexOf来判断了。。
    如果是数值的话,你再利用indexOf(".")来判断是int 或者 double,你这个就不是数值呀
    呃。。是这样的  d="1992.04.06"  这样的。。不能用indexOf()来判断
    1992.04.06这个也不是数值吧?
    哦  明白了  是判断出来是否是数值后 然后用  if(indexOf(".") == -1){return int}else{return int}  明白了。。脑子好混。。
      

  15.   

    不能用indexOf来判断。。万一字符串内容是  String d = "123.helloword.oracle.text.txt";
    就不能用indexOf来判断了。。
    如果是数值的话,你再利用indexOf(".")来判断是int 或者 double,你这个就不是数值呀
    呃。。是这样的  d="1992.04.06"  这样的。。不能用indexOf()来判断
    1992.04.06这个也不是数值吧?
    哦  明白了  是判断出来是否是数值后 然后用  if(indexOf(".") == -1){return int}else{return int}  明白了。。脑子好混。。
    有的时候累了就该出去转一圈,老在那边想会钻牛角尖的,很高兴帮助到你了,记得给分呀