Java中如何实现用一个数组B存储从另一个数组A中挑出的符合要求的数据并进行操作

要求:用一个数组B存储从另一个数组A中挑出的符合要求的数据,并对数组B中的数据进行操作

方法一:

  1、确定数组A中符合要求的元素的个数。

    (1)通常使用一个初始值为0的变量count进行数量标记,

    (2)循环遍历A数组

    (3)遍历的过程中,用 if 判断挑选符合条件的元素,符合条件则count++。

  2、根据符合要求的元素的个数count确定数组B的长度。

  3、使用循环将符合要求的数据依次存储到数组B中

    (1)这里的循环是对数组A进行循环,用 if 挑选出符合条件的的值添加到数组B中。

    (2)这次的循环其实和上面的一样,不同的是上面的是计数,这里是将数据添加到数组中。

  4、根据要求对数组B中的数据进行操作。

案例:

给定一个char类型的数组arr1,

char[] arr1 = {'a','A','B','x','c',15,'Z','a','x','y'};
存储到数组arr2中打印输出数据,并将其中的x及其下标输出出去,若没有x则输出不存在x.
public class Demo02 {
        public static void main(String[] args) {
            //给定一个char类型的数组arr1,从中选出所有小写字母,存储到数组arr2中打印输出数据,并将其中的x及其下标输出出去,若没有x则输出不存在x
            char[] arr1 = {'a','A','B','x','c',15,'Z','a','x','y'};
            //1、确定数组A中符合要求的元素的个数。
            int count = 0;
            for (int i = 0; i < arr1.length; i++) {
                if(arr1[i] >= 'a' && arr1[i] <= 'z'){
                    count++;
                }
            }

            //2、根据符合要求的元素的个数count确定数组B的长度。
            char[] arr2 = new char[count];

            //3、使用循环将符合要求的数据依次存储到数组B中
            int j = 0;
            for (int i = 0; i < arr1.length; i++) {
                if(arr1[i] >= 'a' && arr1[i] <= 'z'){
                    arr2[j++] = arr1[i];
                    System.out.println("数组arr2中第"+j+"个数据是:"+arr1[i]);
                }
            }
            if(j == 0){
                System.out.println("数组arr1中不存在小写字母");
            }
            //4、根据要求对数组B中的数据进行操作。
            int s = 0;
            for (int i = 0; i < arr2.length; i++) {
                if(arr2[i] == 'x'){
                    System.out.println("数组arr2中存在x,它的下标为:"+ i );
                    s++;
                }
            }
            if(s == 0){
                System.out.println("数组arr2中不存在x");
            }
        }
}

方法二:

1、创建一个数组B,长度(容量)为0。

2、循环遍历A数组,用 if 判断挑选符合条件的元素,定义一个函数对B进行扩容(每次扩容一个单位),将符合条件的元素存储到数组B中

  (1)扩容函数可以自己定义,等于是每次创建一个长度比原来+1的新数组,然后复制元素,再进行替换

  (2)JAVA中有定义好的方法,我们可以直接使用Arrays.copyOf().

3、根据要求对数组B中的数据进行操作。

 

案例:

给定一个char类型的数组arr1,

char[] arr1 = {'a','A','B','x','c',15,'Z','a','x','y'};
存储到数组arr2中打印输出数据,并将其中的x及其下标输出出去,若没有x则输出不存在x.
(1)自定义数组扩容方法
public class Demo02 {
        public static void main(String[] args) {
            //给定一个char类型的数组arr1,从中选出所有小写字母,存储到数组arr2中打印输出数据,并将其中的x及其下标输出出去,若没有x则输出不存在x
            char[] arr1 = {'a','A','B','x','c',15,'Z','a','x','y'};

            //1、创建一个数组B,长度(容量)为0。
            char[] arr3 = new char[0];

            //2、循环遍历A数组,用 if 判断挑选符合条件的元素,定义一个函数对B进行扩容(每次扩容一个单位),将符合条件的元素存储到数组B中
           //自定义扩容方法
            for (int i = 0; i < arr1.length; i++) {
                if(arr1[i] >= 'a' && arr1[i] <= 'z'){
                    //扩容,arrCopy()是自定义的扩容方法
                    arr3 = arrCopy(arr3);
            //存储数据 arr3[arr3.length
-1] = arr1[i]; System.out.println("数组arr3中第"+(arr3.length-1)+"个数据是:"+arr1[i]); } } if(arr3.length == 0){ System.out.println("数组arr1中不存在小写字母"); } //3、根据要求对数组B中的数据进行操作。 int s = 0; for (int i = 0; i < arr3.length; i++) { if(arr3[i] == 'x'){ System.out.println("数组arr3中存在x,它的下标为:"+ i ); s++; } } if(s == 0){ System.out.println("数组arr2中不存在x"); } } //数组扩容 public static char[] arrCopy(char[] arr3){ char[] arr4 = new char[arr3.length+1]; //复制原来数组的元素 for (int i = 0; i < arr3.length; i++) { arr4[i] = arr3[i]; } return arr4; } }

(2)使用Java自带扩容方法


import java.util.Arrays;

public class Demo02 {
        public static void main(String[] args) {
            //给定一个char类型的数组arr1,从中选出所有小写字母,存储到数组arr2中打印输出数据,并将其中的x及其下标输出出去,若没有x则输出不存在x
            char[] arr1 = {'a','A','B','x','c',15,'Z','a','x','y'};

            //1、创建一个数组B,长度(容量)为0。
            char[] arr3 = new char[0];

            //2、循环遍历A数组,用 if 判断挑选符合条件的元素,定义一个函数对B进行扩容(每次扩容一个单位),将符合条件的元素存储到数组B中
            for (int i = 0; i < arr1.length; i++) {
                if(arr1[i] >= 'a' && arr1[i] <= 'z'){

                    //扩容,使用自带的方法
                    arr3 = Arrays.copyOf(arr3,arr3.length+1);
                    //存储数据
                    arr3[arr3.length-1] = arr1[i];
                    System.out.println("数组arr3中第"+(arr3.length-1)+"个数据是:"+arr1[i]);
                }
            }
            if(arr3.length == 0){
                System.out.println("数组arr1中不存在小写字母");
            }


            //3、根据要求对数组B中的数据进行操作。
            int s = 0;
            for (int i = 0; i < arr3.length; i++) {
                if(arr3[i] == 'x'){
                    System.out.println("数组arr3中存在x,它的下标为:"+ i );
                    s++;
                }
            }
            if(s == 0){
                System.out.println("数组arr2中不存在x");
            }

        }

}

 

 

 

 

posted @ 2021-04-12 23:11  泰初  阅读(998)  评论(0编辑  收藏  举报