三个"数字":a = "1.23";
            b = "1.23.21";
            c = "23"; 比较结果应该是:c>b>a,请问如何用java编程实现?

解决方案 »

  1.   

    是属于字符串比较吧,compareTo可以吧,自然排序
      

  2.   

    我是初学者,我认为:
    可以用java中的类将字符串直接转换成浮点数,然后进行比较
    但是具体是什么类,我不太清楚
    如果我说的不对,还望高手指教.
    如果用c语言实现的话,就必须自己编函数,我的思路如下:
    double changeDouble(char *ch)
    {
         double numInteger;
         double numFloat;
         
         numInteger = 0.0;
         for ( ;*ch && *ch != '.';++ch)
             numInteger = numInteger * 10 + *ch;
         if (*ch) {
             double base;
           
             base = 1.0;
             numFloat = 0.0;
             for (++ch;*ch;++ch) {
                 base *= 0.1;
                 numFloat += base * (*ch);
             }
             return numInteger + numFloat; 
         }
         
         return numInteger;    
    }
    void compare(char *a,char *b,char *c)
    {
        double numA,numB,numC;
        
        numA = changeDouble(a);
        numB = changeDouble(b);        
        numC = changeDouble(c);    if (numA > numB){
            if (numB >numC)
                printf("%lf>%lf>%lf\n",numA,mumB,numC);
            else if (fabs(numA - numB) < 1e-6)
                printf("%lf>%lf=%lf\n",numA,mumB,numC);
            else if (numA > numC)
                printf("%lf>%lf>%f\n",numA,mumC,numB);
            else if (fabs(numA - numC) < 1e-6)
                printf("%lf=%lf>%lf\n",numA,mumC,numB);
            else 
                printf("%lf>%lf>%lf\n",numC,mumA,numB);
        } else if (fabs(numA-numB) < 1e-6) {
            if (numA > numC)
                printf(("%lf=%lf>%lf\n",numA,mumB,numC);
            else if (fabs(numA - numC) < 1e-6)
                printf("%lf=%lf=%lf\n",numA,mumC,numC);
            else
                printf("%lf>%lf=%lf\n",numC,mumB,numA);
        } else {
            if (numA > numC)
                printf("%lf>%lf>%lf\n",numB,mumA,numC);
            else if (fabs(numA - numC) < 1e-6)
                printf("%lf>%lf=%lf\n",numB,mumA,numC);
            else if (numB > numC)
                printf("%lf>%lf>%lf\n",numB,mumC,numA);
            else if (fabs(numB - numC) < 1e-6)
                printf("%lf=%lf>%f\n",numA,mumC,numB);
            else
                printf("%lf>%lf>%f\n",numC,mumB,numA);
        }
    }            
      

  3.   

    我的意思是用小数点比较,不是字典序,例如:在comparto中 00023<10.23 ,而实际上从第一个小数点看过去00023<10.23的哦。不知道有什么办法截取小数点的方法,循环来比较~~
      

  4.   

    我的意思是用小数点比较,不是字典序,例如:在comparto中 00023 <10.23 ,而实际上从第一个小数点看过去 00023>10.23的哦。不知道有什么办法截取小数点的方法,循环来比较~~
      

  5.   

    我是这样实现的,效果很理想,再次感谢大家~~
    public static boolean checkString(String a, String b) {
     a = "0023.363.36";
     b = "10.23";
    String[] a_1 = a.split("\\.");
    String[] b_1 = b.split("\\.");
    int a_1_len = a_1.length;
    int b_1_len = b_1.length;
    int i = 0, j = 0;
    try {
    while (i < a_1_len && j < b_1_len) {
    if (Integer.parseInt(a_1[i]) > Integer.parseInt(b_1[j])) {
    System.out.println(a_1[i] + ">" + b_1[j]);
    return true;
    } else if (Integer.parseInt(a_1[i]) < Integer.parseInt(b_1[j])) {
    System.out.println(a_1[i] + "<" + b_1[j]);
    return false;
    } else {
    i++;
    System.out.println("i++:" + i);
    j++;
    System.out.println("j++:" + j);
    }
    }
    if (a_1_len > i) {
    System.out.println(a_1_len + ">" + i);
    return true;
    }
    if (b_1_len > j) {
    System.out.println(b_1_len + ">" + j);
    return false;
    } } catch (Exception e) {
    return false;
    }
    return false;
    }