算法训练 删除数组零元素

为君一笑 提交于 2019-12-08 15:20:11

题目如下:
从键盘读入n个整数放入数组中,编写函数CompactIntegers,删除数组中所有值为0的元素,其后元素向数组首端移动。注意,CompactIntegers函数需要接受数组及其元素个数作为参数,函数返回值应为删除操作执行后数组的新元素个数。输出删除后数组中元素的个数并依次输出数组元素。

样例输入:
(输入格式说明:5为输入数据的个数,3 4 0 0 2 是以空格隔开的5个整数)
5
3 4 0 0 2

样例输出:
3
3 4 2

思路:
1.定义数组 arr 接收数据
2.找出数组里面有多少个不为零的整数
3.定义新的数组 newArr,长度为count
4.使用 for 循环将数组 arr 里面不为零的整数赋值给newArr
5.遍历输出数组 newArr

代码:

import java.util.Scanner;

public class 删除数组零元素 {
    //从键盘读入n个整数放入数组中,编写函数CompactIntegers,删除数组中所有值为0的元素,
    // 其后元素向数组首端移动。注意,CompactIntegers函数需要接受数组及其元素个数作为参数,
    // 函数返回值应为删除操作执行后数组的新元素个数。输出删除后数组中元素的个数并依次输出数组元素。

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        //声明变量n接收数组长度,然后定义数组
        int n = sc.nextInt();
        int arr[] = new int[n];

        //给数组赋值
        for(int i = 0;i<arr.length;i++){
            arr[i] = sc.nextInt();
        }
        //调用方法
        CompactIntegers(n,arr);
    }

    public static void CompactIntegers (int i, int arr[]){
        //定义count使用for循环找出数组中有多少个不为零的整数
        int count = 0;
        for (int x =0 ;x<arr.length;x++){
            if(arr[x] != 0){
                count++;
            }
        }

        //定义新的数组,长度为count
        int newArr[] = new int [count];

        //使用for循环把数组 arr 里面不为零的数赋值给 newArr
        int a  = 0 ;
       for(int x = 0;x<arr.length;x++){
           if(arr[x] != 0){

               newArr[a] = arr[x];
               a++;
           }
       }

       //遍历输出新的数组
       for(int x = 0;x<newArr.length;x++){
           System.out.print(newArr[x]+" ");
       }
    }
}

运行效果:
在这里插入图片描述

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!