如何在 java 中使用 do while 循环从第一个数组填充第二个数组?
How to fill second array from the first one using do while loop in java?
基本上我的问题是这样的:
我有一个数组(第一个数组,数组 A),它有 20 个元素,整数值从 0 到 20(它们可以是随机的),例如:
1 2 3 4 5 6 1 2 3 4
1 2 3 4 5 6 1 2 3 4
我需要创建另一个包含 40 个元素的数组(第二个数组,数组 B),它与第一个数组具有相同的值,但要注意的是第一个数组的值用于第二个数组,但在这个模式:
1 1 2 2 3 3 4 4 5 5
6 6 1 1 2 2 3 3 4 4
5 5 6 6 1 1 2 2 3 3
4 4 5 5 6 6 1 1 2 2
基本上,第二个数组的值是:
B[0] = A[0]
B[1] = A[0]
B[2] = A[1]
B[3] = A[1]
etc.
我需要使用 do while 循环来实现。
do {
i++;
B[i] = A[i];
if(i>1) {
B[i] = A[i-1];
}
System.out.print("\t" + B[i]+ " ");
}
while(i < 20);
现在我被这个问题困住了,我无法弄清楚说明第二个数组 (B) 是如何填充的部分。感谢您的帮助!
类似于:
int[] A = {1, 2, 3, 4, 5, 6, 1, 2, 3, 4};
int[] B = new int[A.length * 2];
int index_a = 0;
int index_b = 0;
do {
B[index_b++] = B[index_b++] = A[index_a++];
}
while(index_a < A.length);
System.out.println(Arrays.toString(B));
在这种情况下你需要两个初始条件index_a
;和 index_b
您要执行的操作
B[index_b++] = B[index_b++] = A[index_a++];
和循环条件index_a < A.length
.
这个B[index_b++] = B[index_b++] = A[index_a++];
和
一样
B[index_b] = A[index_a];
index_b++;
B[index_b] = A[index_a];
index_b++;
index_a++;
你可以这样做:
int[] A = {1,2,3,4,5,6,1,2,3,4};
int[] B = new int[A.length * 2];
int i = 0;
do {
int index = 2 * i;
B[index] = A[i];
B[index + 1] = A[i];
i++;
} while(i < A.length);
您在这里所做的是将每个元素从 A 映射到其索引的 2x
和 2x + 1
。然后你可以像你想要的那样填补“空白”。
这是一个 do-while 循环的示例,它完全按照您的要求执行。
int[] A = {1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 1, 2, 3, 4, 5, 6, 1, 2, 3, 4};
int[] B = new int[A.length*2];
int i = 0;
do {
// Iterates through 0 & 1, then 2 & 3, etc.
B[i*2] = A[i];
B[i*2+1] = A[i];
i++;
} while (i < A.length);
for (int num : B) {
System.out.printf("%d ", num);
}
这会打印 1 1 2 2 3 3 4 4 5 5 6 6 1 1 2 2 3 3 4 4 1 1 2 2 3 3 4 4 5 5 6 6 1 1 2 2 3 3 4 4
.
基本上我的问题是这样的:
我有一个数组(第一个数组,数组 A),它有 20 个元素,整数值从 0 到 20(它们可以是随机的),例如:
1 2 3 4 5 6 1 2 3 4
1 2 3 4 5 6 1 2 3 4
我需要创建另一个包含 40 个元素的数组(第二个数组,数组 B),它与第一个数组具有相同的值,但要注意的是第一个数组的值用于第二个数组,但在这个模式:
1 1 2 2 3 3 4 4 5 5
6 6 1 1 2 2 3 3 4 4
5 5 6 6 1 1 2 2 3 3
4 4 5 5 6 6 1 1 2 2
基本上,第二个数组的值是:
B[0] = A[0]
B[1] = A[0]
B[2] = A[1]
B[3] = A[1]
etc.
我需要使用 do while 循环来实现。
do {
i++;
B[i] = A[i];
if(i>1) {
B[i] = A[i-1];
}
System.out.print("\t" + B[i]+ " ");
}
while(i < 20);
现在我被这个问题困住了,我无法弄清楚说明第二个数组 (B) 是如何填充的部分。感谢您的帮助!
类似于:
int[] A = {1, 2, 3, 4, 5, 6, 1, 2, 3, 4};
int[] B = new int[A.length * 2];
int index_a = 0;
int index_b = 0;
do {
B[index_b++] = B[index_b++] = A[index_a++];
}
while(index_a < A.length);
System.out.println(Arrays.toString(B));
在这种情况下你需要两个初始条件index_a
;和 index_b
您要执行的操作
B[index_b++] = B[index_b++] = A[index_a++];
和循环条件index_a < A.length
.
这个B[index_b++] = B[index_b++] = A[index_a++];
和
B[index_b] = A[index_a];
index_b++;
B[index_b] = A[index_a];
index_b++;
index_a++;
你可以这样做:
int[] A = {1,2,3,4,5,6,1,2,3,4};
int[] B = new int[A.length * 2];
int i = 0;
do {
int index = 2 * i;
B[index] = A[i];
B[index + 1] = A[i];
i++;
} while(i < A.length);
您在这里所做的是将每个元素从 A 映射到其索引的 2x
和 2x + 1
。然后你可以像你想要的那样填补“空白”。
这是一个 do-while 循环的示例,它完全按照您的要求执行。
int[] A = {1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 1, 2, 3, 4, 5, 6, 1, 2, 3, 4};
int[] B = new int[A.length*2];
int i = 0;
do {
// Iterates through 0 & 1, then 2 & 3, etc.
B[i*2] = A[i];
B[i*2+1] = A[i];
i++;
} while (i < A.length);
for (int num : B) {
System.out.printf("%d ", num);
}
这会打印 1 1 2 2 3 3 4 4 5 5 6 6 1 1 2 2 3 3 4 4 1 1 2 2 3 3 4 4 5 5 6 6 1 1 2 2 3 3 4 4
.