第四周:数组的各类处理方法java

一:整形数组的处理

1.数组的逆置

思路:

(1)先给一个数组输入值

(2)再将其从最后一个下表开始往前输出

代码:

import java.util.Scanner;

public class test1 {//数组的逆向输出
    public static void main(String args[]) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();// 定义一个数组长度
        int[] arr = new int[n];// 动态初始化数组
        int i;
        for (i = 0; i < arr.length; i++) {
            arr[i] = in.nextInt();// 用for循环输入
        }
        for (i = arr.length - 1; i >= 0; i--) {//将数组从最后一个开始往前输入
            System.out.printf("%d ", arr[i]);
        }
    }
}
/*
 * 运行结果
 * 5
 * 1 2 3 4 5
 * 5 4 3 2 1
 */

2.数组的去值

思路:

(1)先给第一个数组赋予值

(2)遍历数组将不需要的数字删除,将需要的数字组成一个新的数组

(3)将新的数组输出即可得到去值后的数组

代码:

public class test2 {
    public static void main(String args[]) {
        int[] oldArr = { 1, 3, 4, 5, 0, 0, 0, 6, 6, 0, 5, 4, 7, 6, 7, 0, 5 };
        int[] newArr = new int[100];
        int i;
        int c = 0;
        for (i = 0; i < oldArr.length; i++) {
            if (oldArr[i] != 0) {
                newArr[c++] = oldArr[i];// 如果旧数组中的数据不为0,将其储存再新的数组中
            }
        }
        for (i = 0; i < c; i++) {
            System.out.printf("%d ", newArr[i]);// 输出
        }
    }
}
/*
 * 运行结果
 * 1 3 4 5 6 6 5 4 7 6 7 5
 */

3.数组的合并

思路:

(1)先给第一个数组赋予值,再给第二个数组赋予值

(2)定义一个新的数组用于储存两个数组,其长度为两个数组长度之和

(3)分别遍历两个数组,将其赋值给新的数组

代码:

public class test3 {
    public static void main(String args[]) {
        int[] a = { 1, 7, 9, 11, 13, 15, 17, 19 };
        int[] b = { 2, 4, 6, 8, 10 };
        int[] c = new int[a.length + b.length];// 定义一个数组,其长度等于a数组和b数组之和
        int i;
        int cnt = 0;// 定义一个变量
        for (i = 0; i < a.length; i++) {
            c[cnt++] = a[i];
        }
        for (i = 0; i < b.length; i++) {
            c[cnt++] = b[i];
        }
        for (i = 0; i < c.length; i++) {
            System.out.printf("%d ", c[i]);// 输出新的数组
        }
    }
}
/*
 * 运行结果
 * 1 7 9 11 13 15 17 19 2 4 6 8 10
 */

二:字符型数组的处理方法

1.数组的合并

方法一:遍历

思路:

遍历两个数组,将其赋值给一个新的数组

代码:

public class test4 {
    public static void main(String args[]) {
        String[] a = { "我", "爱", "java" };//初始化数组
        String[] b = { "真的", "好", "喜欢" };
        String[] c = new String[a.length + b.length];
        int cnt = 0;
        for (int i = 0; i < a.length; i++) {//遍历第一个数组
            c[cnt++] = a[x];
        }
        for (int i = 0; i < b.length; i++) {//遍历第二个数组
            c[cnt++] = b[y];
        }
        for (int i = 0; i < c.length; i++) {
            System.out.print(c[i] + " ");//输出
        }
    }
}
/*
 * 运行结果
 * 我 爱 java 真的 好 喜欢
 */

方法二:System.arraycopy()

1什么是System.arraycopy()

System.arraycopy()就是把一个数组中某一段字节数据放到另一个数组中。

2.System.arraycopy()怎么使用

arraycopy(源数组,源数组要复制的起始位置, 目的数组, 目的数组放置的起始位置, 复制的长度)

3.代码:

public class test5 {
    public static void main(String args[]) {
        String[] a = { "我", "爱", "java" };// 初始化数组
        String[] b = { "真的", "好", "喜欢" };
        String[] c = new String[a.length + b.length];
        System.arraycopy(a, 0, c, 0, a.length);//源数组,源数组要复制的起始位置, 目的数组, 目的数组放置的起始位置, 复制的长度
        System.arraycopy(b, 0, c, a.length, b.length);//源数组,源数组要复制的起始位置, 目的数组, 目的数组放置的起始位置, 复制的长度
        for (int i = 0; i < c.length; i++) {
            System.out.print(c[i] + " ");// 输出
        }
    }
}
/*
 * 运行结果
 * 我 爱 java 真的 好 喜欢
 */

你可能感兴趣的:(java)