当前位置:编程学习 > JAVA >>

数组求和的问题(求帮忙)

--------------------编程问答--------------------
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;
}

}


你看这样行不 --------------------编程问答-------------------- 非常感谢非常感谢 --------------------编程问答--------------------

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));
}

--------------------编程问答-------------------- 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;

}
}
} --------------------编程问答-------------------- --------------------编程问答--------------------



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);
    }
 
}
 

--------------------编程问答-------------------- 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);        
    }
 
} --------------------编程问答--------------------


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);
    }
 
}


已经测试过了 完全符合楼主的需求。 --------------------编程问答-------------------- 感谢楼上几位的回答
补充:Java ,  Java EE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,