设计一个程序,将给定的字符串型的数值输入数据中的无效零去掉,返回一个新的字符串。数据只考虑有数字,小数点的情况。(其他0-9,“.”以外的字符(逗号,+,-,E等)直接按非法处理)例如:“00001”--> 输出“1”, 包含非法字符的字符串--> 返回异常.请教会的高手们这个程序应该用java怎么写啊 非常感谢啊!!!

解决方案 »

  1.   

    不难呀!

    class A{ 
      public static String str = "000100000.00"; 
      public static void main(String[] arg0)
      {
    System.out.println(new Double(str));//ok不?
      }

      

  2.   

    不难呀! class A{ 
      public static String str = "000100000.00"; 
      public static void main(String[] arg0)
      {
    System.out.println(new Double(str));
      }
      

  3.   

    这是Integer的class A{ 
      public static String str = "000100000"; 
      public static void main(String[] arg0)
      {
        System.out.println(new Integer(str));
      }

      

  4.   

    java_zhaidp 真会开玩笑,呵呵
    楼主看看下面这段代码//作者:dyw31415926 留个名才行,100%原创 ^-^
    public class Test001 {
    public static void main(String[] args) {
    Test001 test001 = new Test001();
    //测试一
    String str1 = "00001";
    String str1RemoveZero = test001.removeZero(str1);
    System.out.println("str1RemoveZero=" + str1RemoveZero);// 1

    //测试二
    String str2 = "000100000";
    String str2RemoveZero = test001.removeZero(str2);
    System.out.println("str2RemoveZero=" + str2RemoveZero);// 100000

    //测试三
    String str3 = "000100000.0010";
    String str3RemoveZero = test001.removeZero(str3);
    System.out.println("str3RemoveZero=" + str3RemoveZero);// 100000.001

    //测试四
    String str4 = "000.000100";
    String str4RemoveZero = test001.removeZero(str4);
    System.out.println("str4RemoveZero=" + str4RemoveZero);// 0.0001

    //测试五
    String str5 = "000adf100000";
    String str5RemoveZero = test001.removeZero(str5);
    System.out.println("str5RemoveZero=" + str5RemoveZero);// ""

    //从上面的测试结果来看,应该说很好的满足我们的目的了 } /**
     * 将给定的字符串型的数值输入数据中的无效零去掉,返回一个新的字符串。
     * @param str 你要转换的字符串
     * @return  转换后的字符串
     */
    public String removeZero(String str) {
    String temp = str;
    temp = temp.replaceAll("\\.", "").replaceAll("\\d", "");
    if (!temp.equals("")) {
    //因为出现了非法字符了,所以直接返回 "";
    return "";
    }
    String returnString = str;
    //首先判断有没有.
    int indexPoint = returnString.indexOf(".");
    //如果有.则分为左右两部分处理,左边是整数部分,右边是剩下的部分
    if (indexPoint > 0) {
    //获取整数部分
    String strLeft = returnString.substring(0, indexPoint);
    //获取剩下的部分
    String strRight = returnString.substring(indexPoint, returnString
    .length());
    //将整数部分的前缀0都去掉,前提是至少整数部分还有一位
    while (strLeft.startsWith("0") && strLeft.length() > 1) {
    strLeft = strLeft.substring(1, strLeft.length());
    }
    //将小数部分的0都去掉,
    while (strRight.endsWith("0")) {
    strRight = strRight.substring(0, strRight.length() - 1);
    }
    //如果小数部分全部是0,则小数点.也是没有意思的,则也去掉
    if (strRight.endsWith(".")) {
    strRight = "";
    }
    //将处理过的整数部分和剩下的部分再次合起来,连成返回的字符串
    returnString = strLeft + strRight;
    }
    //如果没有小数点,则好办多了,直接将前缀的0去掉,前提是至少整数部分还有一位
    else{
    while (returnString.startsWith("0") && returnString.length() > 1) {
    returnString = returnString.substring(1, returnString.length());
    }
    }
    return returnString;
    }
    }
      

  5.   

    谢谢 dyw31415926 的例子了 看后收获比较大!!
      

  6.   

    dyw31415926:最简单的难道不是最好的?