gpt4 book ai didi

Java:使用第一个数组的前 3 个整数,然后使用第二个数组的 3 个整数,将 2 个数组组合成第三个数组

转载 作者:行者123 更新时间:2023-12-02 10:45:44 24 4
gpt4 key购买 nike

我有 3 个数组 A、B 和 C。A 和 B 的大小为 6,C 的大小为 12。我必须将 A 和 B 组合成 C,但使用 A 的前 3 个整数,然后使用第一个B 的 3 个整数,然后是 A 的接下来 3 个整数,最后是 B 的最后 3 个整数。例如:int A[]={1,2,3,7,8,9}, B[]={4, 5,6,10,11,12}并用 C[]={1,2,3,4,5,6,7,8,9,10,11,12}

填充 C

这是我到目前为止的代码:

   public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[] A = new int[6];
int[] B = new int[6];
int[] C = new int[12];

int count = 0;

for (int i = 0; i < 6; i++) {
System.out.println("Array A: ");
A[i]=sc.nextInt();
System.out.println("Array B: ");
B[i]=sc.nextInt();
}

System.out.println("");
System.out.print("|");
for (int i = 0; i < 6; i++) {
System.out.print(A[i]+"|");
}
System.out.println("");
System.out.print("|");
for (int i = 0; i < 6; i++) {
System.out.print(B[i]+"|");
}

while(count < 3){
count++;
{

我真的迷失了这个

最佳答案

这是一个相对简单的问题,可以通过多种方式解决。最简单的是,因为这是您给出的静态示例,执行类似的操作

    c[0] = a[0];
c[1] = a[1];
c[2] = a[2];
c[3] = b[0];
.
.
.
c[11] = b[5]

这不能很好地扩展,并且难以维护,但从技术上讲可以满足您的要求。

接下来,我将简单地看一下 for 循环。在这篇文章的前一个版本中,我没有包含它们,因为我看到了其他回复,但后来添加了它们,因为我认为它们可以改进:

    //  Using loops     
final int[] c = new int[12];
for (int i = 0; i < 3; ++i) {
c[i] = a[i];
c[i + 3] = b[i];
c[i + 6] = a[i + 3];
c[i + 9] = b[i + 3];
}

这也非常简单高效。我们只需要 3 次循环迭代即可覆盖数组的两半,使用偏移量来避免为每个部分创建多个 for 循环。这种简单的知识来自于经验,因此我建议通过更多示例来了解。

接下来,我们将看看一些更有趣的选项。如果您不熟悉 Java API,我建议您首先在谷歌上搜索各种内容,例如“java 复制数组的一部分”或“java 将数组插入另一个数组”。

此类搜索会导致类似以下的帖子:

Java copy section of array

Insert array into another array

How to use subList()

从那里,您可以构造一个相当明确的答案,例如:

    //  Using System::arraycopy<T>(T[], int, T[], int, int), where T is the array-type.
final int[] c = new int[12];
System.arraycopy(a, 0, c, 0, 3);
System.arraycopy(b, 0, c, 3, 3);
System.arraycopy(a, 3, c, 6, 3);
System.arraycopy(b, 3, c, 9, 3);

这可能足以满足您的大多数需求。

但是,通过这个过程,我学会了另一种使用流来实现这一点的方法!

    // Using java.util.stream
final List<Integer> l_a = Arrays.stream(a).boxed().collect(Collectors.toList());
final List<Integer> l_b = Arrays.stream(b).boxed().collect(Collectors.toList());

final List<Integer> l_c = new ArrayList<Integer>() {{
addAll(l_a.subList(0, 3));
addAll(l_b.subList(0, 3));
addAll(l_a.subList(3, 6));
addAll(l_b.subList(3, 6));
}};

final int[] c = l_c.stream().mapToInt(i -> i).toArray();

虽然最后一个例子可能不如第二个例子优雅,但通过研究问题和潜在解决方案的过程教会了我一些东西,我现在可以随身携带。

希望这有帮助!

关于Java:使用第一个数组的前 3 个整数,然后使用第二个数组的 3 个整数,将 2 个数组组合成第三个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52599129/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com