java 字符串判断的问题,谢谢

          String sf = "12000";
          if(sf.indexOf(String.valueOf("\\.")) == -1){
            out.println("float");
          }else{
            out.println("int"); 
          }


                        想做个判断字符串是否为float,可总不对。

这个问题看似简单,其实还是比较复杂的。
首先你需要明确认定什么样的数是float。
有小数点就是float? 那 hello.123呢,123...68,.567呢?

如果要考虑这些特殊情况,基本的逻辑是这样的:

首先:

 NumberUtils.isNumber(aString); //用此函数判断字符串是否为数字组成。

然后:

   查找小数点的个数和位置
   当小数点个数为1且不在字符串首部时,可以认为是float数。

当然,在你的题目中可能不需要考虑这些情况,那用你的代码是可以的,只是需要修改一下:
更正后的代码如下:

 public static void main(String[] args) {
        String sf = "12000";
        if(sf.indexOf('.') == -1){  //查不到字符'.',返回-1。另外注意是单引号。
            System.out.println("int"); 
        }
            else{
            System.out.println("float");
        }
    }
 if(sf.indexOf(String.valueOf("\\.")) == -1){
->
if(sf.indexOf(".") == -1){
    try {
        Float.parseFloat(sf);
        System.out.println("float");
    }catch (Exception e){
        System.out.println("int");
    }

学习到了,哈哈哈,以前我的思路也和你一样,看了一楼的瞬间恍然大悟