本帖最后由 iklim 于 2013-09-01 17:40:56 编辑

解决方案 »

  1.   

    public class Test1
    { public static void main(String[] args)
    { int arr[] = { 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1 };

    int[] nums = getNewArray(arr); for (int x : nums)
    {
    System.out.println(x);
    }
    } public static int[] getNewArray(int[] arr)
    {
    int[] nums = new int[5];
    int sum = 0;
    int j = 0;
    for (int i = 0; i < arr.length; i++)
    {
    sum = sum + arr[i]; if (arr[i] == 0 && sum != 0)
    {
    nums[j] = sum;
    j++;
    sum = 0;
    }
    if (i == arr.length - 1 && sum != 0)
    {
    nums[j] = sum;
    }
    } return nums;
    }}
    你看这样行不
      

  2.   


    public static void main(String[] args) {
    int arr[] = { 1, 1, 1, 0, 0, 1, 1, 0, 0, 1,1,1,0,1,0,1 };// 
    int [] nums = new int [5];
    //从arr[0]开始如果值是1则累计和然后赋给nums,如果为0跳过不累计
    //
    //
    //
    //nums的结果为{3,2,3,1,1}
    /*
     * 
     * 请问应该怎么写呢?
     * 
     * 
     * */
    int j=0;
    for(int i=0;i<arr.length;i++){
    if(arr[i]==1)
    nums[j]++;
    if((i==arr.length-1&&arr[i-1]==0)||(arr[i]==1&&arr[i+1]==0))
    j++;
    }

    System.out.println(Arrays.toString(nums));
    }
      

  3.   

    public static void main(String[] argcs){
    int[] arr = {1,1,1,0,0,1,1,0,0,1,1,1,0,1,0,1};
    int[] num = new int[5];

    for(int i = 0, count = 0, res = 0; i < arr.length; i++){
    if(arr[i] != 0) res += arr[i];
    if(arr[i] == 0 || i == arr.length - 1){
    if(res == 0) continue;
    num[count++] = res;
    res = 0;

    }
    }
      

  4.   


    public class Test1 {
     
        public static void main(String[] args) {
             
            int arr[] = {1, 1, 1, 0, 0, 1, 1, 0, 0, 1,1,1,0,1,0,1};// 
            int [] nums = new int [5];
            //从arr[0]开始如果值是1则累计和然后赋给nums,如果为0跳过不累计
            //        
            //        
            //        
            //nums的结果为{3,2,3,1,1}
            /*
             * 
             * 请问应该怎么写呢?
             * 
             * 
             * */
            int sum = 0;
            int j = 0;
            for(int i=0;i<arr.length;i++){
             if(arr[i]!=0||sum==0){
            
             sum = sum+arr[i];
             continue;
             }
             else{
            
             nums[j] = sum;
             ++j;
             sum = 0;
             }
            }
            for(int s = 0;s<5;s++){
            
              System.out.println(nums[s]);
            } 
            System.out.println(arr.length);
        }
     
    }
     
      

  5.   

    public class Test1 { 
        public static void main(String[] args) {         
                    int arr[] = { 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1 }; 
    int[] nums = new int[5];

    int i = 0, j = 0, iSum = 0, iLen = arr.length;
    for (i = 0; i < iLen; i++) {
    if (arr[i] == 1) {
    iSum += arr[i];
    } else if ((j < 5) && (iSum != 0)) {
    nums[j++] = iSum;
    iSum = 0;
    } if ((j < 5) && (arr[i] != 0) && (i == iLen - 1))
    nums[j++] = iSum;
    } iLen = nums.length;
    for (i = 0; i < iLen; i++) {
    System.out.println(nums[i]);
    }
     System.out.println(arr.length);        
        }
     
    }
      

  6.   

    public class Test1 {
     
        public static void main(String[] args) {
             
            int arr[] = {1, 1, 1, 0, 0, 1, 1, 0, 0, 1,1,1,0,1,0,1};// 
            int [] nums = new int [5];
            //从arr[0]开始如果值是1则累计和然后赋给nums,如果为0跳过不累计
            //        
            //        
            //        
            //nums的结果为{3,2,3,1,1}
            /*
             * 
             * 请问应该怎么写呢?
             * 
             * 
             * */
            int sum = 0;
            int j = 0;
            for(int i=0;i<arr.length;++i){
         
            
             if(arr[i]!=0||sum==0){
            
             sum = sum+arr[i];
            
                 if(i == arr.length-1){//如果是最后一个数值则把sum放到nums数组中
                
                 nums[j] = sum;
                 break;
                 }
            
             continue;  //如果数组的值不是0或者sum的值是0就继续执行循环,不把值放到nums中
            
             }
             else{
            
             nums[j] = sum;//把连续的不为0的数字的和放到数组中
             ++j;          //指向数组的下一个位置
             sum = 0;   //数值放到数组中之后 重新置为0
             }
            }
            //用来测试 输出nums数组中的值
            for(int s = 0;s<5;s++){
            
              System.out.println(nums[s]);
            } 
            
            System.out.println(arr.length);
        }
     
    }
    已经测试过了 完全符合楼主的需求。