鱼C论坛

 找回密码
 立即注册
查看: 2669|回复: 4

[已解决]新数组中找出所有的奇数元素并求和

[复制链接]
发表于 2022-3-11 19:23:28 | 显示全部楼层 |阅读模式
5鱼币
int []arr={12,0,45,0,3,0,23,8,45,8};

去除arr数组中的0元素,并生成一个新数组,并在新数组中找出所有的奇数元素并求和
最佳答案
2022-3-11 19:23:29
class Solution {
    public static void sumOddElements(int[] arr){
            List<Integer> newList = new ArrayList<>();
            int sum = 0;
            for(int idx = 0; idx < arr.length; idx++){
                    int num = arr[idx];
                    if(num != 0){
                            if(num % 2 == 1) sum += num;
                            newList.add(num);
                    }
            }
            System.out.println("new list: " + newList);
            System.out.println("sum of odd elements: " + sum);
    }
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-3-11 19:23:29 | 显示全部楼层    本楼为最佳答案   
class Solution {
    public static void sumOddElements(int[] arr){
            List<Integer> newList = new ArrayList<>();
            int sum = 0;
            for(int idx = 0; idx < arr.length; idx++){
                    int num = arr[idx];
                    if(num != 0){
                            if(num % 2 == 1) sum += num;
                            newList.add(num);
                    }
            }
            System.out.println("new list: " + newList);
            System.out.println("sum of odd elements: " + sum);
    }
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-3-11 20:12:54 | 显示全部楼层
import java.util.Scanner;

public class deom1 {
    public static void main(String[]args){
        //接收数组的长度
        int []arr={12,0,45,0,3,0,23,8,45,8};
        int count=0;
        for (int i=0;i<arr.length;i++){
            if (arr[i]!=0){
                count++;
            }
        }
        //创建数组,新数组的长度就是非元素的个数
        int[]newArr =new int[count];
        //把arr数组中的非元素给newArr数组进行赋值
        //给newArr数组声明一个新下标求进行赋值
        int index=0;
        for (int i=0;i<arr.length;i++) {
            if (arr[i] != 0) {
                newArr[index] = arr[i];
                //newArr[i]=arr[i];    ArrayIndexOutOfBoundException :下标越界
                newArr[index] = arr[i];
                /**
                 * index          i
                 * 0              0    12
                 * 1              2    45
                 */
                index++;
            }
        }
          //在newArr数组中找出奇数元素
        //声明一个变量来表示奇数和
                int sum=0;
                for (int i=0;i<newArr.length;i++){
                    if (newArr[i]%2!=0){
                        sum+=newArr[i];
                    }
                }
                System.out.println("当前arr数组中的奇数和为:"+sum);
            }
        }
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-3-11 21:23:06 | 显示全部楼层
#include <stdio.h>
#include <stdlib.h>
#define length(arr) (sizeof(arr)/sizeof(arr[0]))
int main()
{
        int arr[]= { 12,0,45,0,3,0,23,8,45,8 };
        int len = length(arr);
        for (int i = 0; i < len; i++)
        {
                if (arr[i] == 0)
                {
                        for (int j = i; j < len; j++)
                        {
                                arr[j] = arr[j+1];
                        }
                        len--;
                }
        }
        int num = len;
        int *new_arr;
        new_arr = (int*)malloc(len * sizeof(int));
        int sum = 0;
        printf("新数组为: ");
        for (int i = 0; i < len; i++)
        {       
                new_arr[i] = arr[i];
                if (new_arr[i] % 2 != 0)
                {
                        sum += new_arr[i];
                }
                printf("%d ", new_arr[i]);
        }
        printf("\n奇数和为: %d \n", sum);
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-3-11 23:30:56 | 显示全部楼层
        public static int[] deleElement(int arr[], int ele){
                int newArr[]=new int[arr.length];
                int j=0, zero=0;
                
                for(int i=0; i<arr.length; i++){
                        if(arr[i]==ele) {
                                zero++;
                                continue;
                        }
                        newArr[j++]=arr[i];
                }
                                
                int newLen = newArr.length-zero;
                int resArr[] = new int[newLen];
                System.arraycopy(newArr, 0, resArr, 0, newLen);
                
                return resArr;                
        }
        
        public static int sumOdd(int arr[]) {
                
                int sum=0;
                for(int i=0; i<arr.length; i++) {
                        if (arr[i]%2!=0) {
                                sum+=arr[i];
                        }
                }
                return sum;
                
        }
                int arr[]={12,0,45,0,3,0,23,8,45,8};
                int newArr[] = deleElement(arr, 0);
                int sum = sumOdd(newArr);
                
                System.out.println(sum);
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-22 14:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表