此程序处理一个由0和非0数字成员组成的数组(长度自定),
 例如0 0 1 2 0 1 0 0 0 1 0 0 0 0 0 2 0 7 8 9 0 0 1 2 3 4,
 把数组中所有连续两个以上的0去掉,将结果存入一个新数组。
 如上例处理后结果为,1 2 0 1 1 2 0 7 8 9 1 2 3 4。 

解决方案 »

  1.   


      String regex = "([0]{2,})";  
      String str = "00120100010000020789001234";
      String resultStr = str.replaceAll(regex, "");
      System.out.print(resultStr);
    lz是这样吗
      

  2.   

    public class AppMain {
    public static void main(String[] args){
    int org[] = new int[]{1,0,0};
    int length = org.length;
        int res[] = new int[length];
        int j=0;
        if(length==1){
         res[j] = org[0];
        
        }else{
         for(int i=0;i<length;i++){
         if(org[i]!=0){
         res[j] = org[i];
         j++;
         }else{
         if(i+1<length&&org[i+1]!=0){
         res[j] = org[i];
         j++;
         }else if(i+1<length){     
             while(org[i+1]==0){
              i++;
              if(i+1==length) break;
             }
         }     
         }
        }
        if(org[length-1]==0&&org[length-2]!=0){
         res[j] = org[length-1];
         j++;
        }
        }     
        for(int i=0;i<res.length;i++){
         System.out.print(res[i]+" ");
        }
    }}
      

  3.   

    呃,最后一个for循环改成i<j;
    第一个if语句加一句 j++;不知道这样行不行
      

  4.   

    感觉就是一堆的判断,呵呵import java.util.Arrays;public class Test01 {    public static void main(String[] args) {
            int[] nums = { 
                    0, 0, 1, 2, 0, 1, 0, 0, 0, 1, 
                    0, 0, 0, 0, 0, 2, 0, 7, 8, 9,
                    0, 0, 1, 2, 3, 4
                };
            int k = 0;
            for(int i = 1, n = nums[0]; i < nums.length; i++) {
                if(!(nums[i] == 0 && (n == 0 || (i < nums.length - 1 ? nums[i+1] == 0 : true)))) {
                    if(i == 1 && (n != 0 || (n == 0 && nums[i] != 0))) {
                        nums[k++] = n;
                    }
                    nums[k++] = nums[i];
                }
                n = nums[i];
            }
            int[] newNums = new int[k];
            System.arraycopy(nums, 0, newNums, 0, k);
            System.out.println(Arrays.toString(newNums));
        }
    }
      

  5.   


    String str = "00120100010000020789001234";
    System.out.println(str.replaceAll("[0]{2,}", ""));
      

  6.   

    public class Test2 {
    public static void main(String [] args){
    String [] s= {"1","2","0","0","3","0","3","4","0","0","9","0","0","2"};
    String s1 = s[0];
    for(int i = 1;i < s.length;i ++){
    s1 = s1 + s[i];
    }
    String s2 = s1.replaceAll("0+", "0");
    char[] ch = s2.toCharArray();

    }
    }
      

  7.   

    javacode
    String str = "00120100010000020789001234";
    str = str.replace("00","");
    System.out.println(str);
      

  8.   

    java递归调用实现(已通过验证)
    public class Test2
    {
    public static String str1="";
    public static void cut(String str,int i)
    {

    while(str.charAt(i)=='0')
    {
    i++;
    }
    if(i>1)
    {
    str=str.substring(i,str.length());
    }
    else
    {
    str1+=str.charAt(0);
    if(str.length()!=1)
    {
    str=str.substring(1,str.length());
    }
    else
    {
    System.out.println("str1="+str1);
    return ;
    }
    }
    cut(str,0);
    }
    public static void main(String[] args)
    {
    String str="";
    if(args.length==0)
    {
    str="00120100010000020789001234";
    }
    else
    {
    str=args[0];
    }
    cut(str,0);
    }
    }
      

  9.   

    replace
    public String replace(char oldChar,
                          char newChar)返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 而生成的。 
    如果 oldChar 在此 String 对象表示的字符序列中没有出现,则返回对此 String 对象的引用。否则,创建一个新的 String 对象,用来表示与此 String 对象表示的字符序列相等的字符序列,除了每个出现的 oldChar 都被一个 newChar 替换之外。 示例: "mesquite in your cellar".replace('e', 'o')
             returns "mosquito in your collar"
     "the war of baronets".replace('r', 'y')
             returns "the way of bayonets"
     "sparring with a purple porpoise".replace('p', 't')
             returns "starring with a turtle tortoise"
     "JonL".replace('q', 'x') returns "JonL" (no change)
     
    参数:
    oldChar - 原来的字符。
    newChar - 新字符。 
    返回:
    一个从此字符串派生的字符串,方法是在每个出现 oldChar 的地方用 newChar 替换。--------------------------------------------------------------------------------jdk上的,好好看看
      

  10.   

     String str = "00120100010000020789001234";
     System.out.println(str.replaceAll("[0]{2,}", ""));
    正则好强大!!!