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

        }

}
 
        

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM