题目
现在给出两个数组
数组arr1: “1,7,9,11,13,15,17,19”;
数组arr2:”2,4,6,8,10”
求两个数组合并之后数组newArr
一、解题之前我们需要注意
数组中的索引值的和在for循环中i作为索引值的时候
在这里,数组里面有4个数的话,length就是4 但是表示索引值就是length-1 因为,数组的索引值是从0开始,要比length少一个
for(int i =0; i<arr.length;i++){}
//之中的i是表示的索引值,也就是数组的索引值,
二、解题步骤
1.解题理解
拿到这道题之前,我们思考两个数组拼接要怎么拼接,可以去重,可以有序,我这里就用直接拼接作为练习,去重和排序可以去自己试试
1.1解题思路
1.拿到arr1数组过后,将arr1数组遍历出来,然后把第二个数组拼接到后面去
2.用if去决定他们的具体的索引值范围
1.2具体步骤
1.声明数组arr1,arr2,以及作为拼接存值的数组newArr
2.在newArr数组中,他的长度为arr1和arr2的总和
具体代码实现如下
int[] arr1 = {1, 7, 9, 11, 13, 15, 17, 19};
// 这里arr1的索引值为0 1 2 3 4 而length值为 5
int[] arr2 = {2, 4, 6, 8, 10};
int[] newArr = new int[arr1.length + arr2.length];
3.用for循环对newArr数组进行遍历,借用i作为索引值来记录
for (int i = 0; i < arr1.length + arr2.length; i++) {
4.用if进行判断判断的范围是arr1数组所在的索引值的范围,将他遍历出来,然后赋值给newArr
if (0 <= i && i < arr1.length) {
newArr[i] = arr1[i];
}
5.此时剩下的索引值就全部是arr2的索引值 就直接用 i - arr1.length去表示第二个数组进行拼接的索引值,因为前面arr1的索引值对应的值已经到了newArr中,所以我们需要用 i - arr1.length
newArr[i] = arr2[i - arr1.length];
6.最后输出newArr[i] 就可以实现拼接的功能
三、完整代码实现
package Day05_Work;
import java.util.Arrays;
/**
* @author:
* @ClassName:Test3
* @Package:com.Test3
* @Description:
* @CreateDate:2022年09月29日
* @Version:1.8
**/
public class Work_10 {
public static void main(String[] args) {
// 这里arr1的索引值为0 1 2 3 4 5 6 7 而length值为 8
int[] arr1 = {1, 7, 9, 11, 13, 15, 17, 19};
// 这里arr1的索引值为0 1 2 3 4 而length值为 5
int[] arr2 = {2, 4, 6, 8, 10};
int[] newArr = new int[arr1.length + arr2.length];
// for(int i=0;i<13;i++)不能等于13,因为长度就是实际长度,为13 但是索引值是12,所以我们要限制到12
System.out.println("=====按照直接合并到arr1数组后面的思路得到的结果为:=========");
for (int i = 0; i < arr1.length + arr2.length; i++) {
// 第一种合并,直接堆在后面去
// 这里判断的是 第一个数组arr1的数组的下标索引值,当在这个范围的时候,我们进行传值
if (0 <= i && i < arr1.length) {
newArr[i] = arr1[i];
// 这里是进行第二个数组的索引值的判断
} else {
/*
这里注意arr.length 和索引值的差别,索引值是从0开始,length有多长就是多长
注意这里索引值的变化
*/
newArr[i] = arr2[i - arr1.length];
}
System.out.print(newArr[i] + " ");
}
}
}
四、 总结
这道题主要知道的是索引值的变化,然后我们才能去进行判断第一个数组arr1和第二个数组arr2的索引值取值的范围,然后用if去限制就可以实现我们的需求
以上是解题步骤。若有不明白的地方,可以私信作者。