数组求和的问题(求帮忙)
--------------------编程问答--------------------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 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 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