要求:用一個數組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"); } } }