我需要做的是创建第三个动态数组(我想我做了),它结合了前两个的长度,然后将这些数组的内容打印出来作为第三个数组的输出。
示例:
数组1: 1 4 2 6 0
数组2: 3 6 2 1 5
阵列3: 1 4 2 6 0 3 6 2 1 5
这是我到目前为止所做的:
import javax.swing.*;
public class DynamicArray
{
public static void main(String[] args)
{
// User Input - Array length
int arrayLength;
arrayLength = Integer.parseInt(JOptionPane.showInputDialog("Enter Array length:"));
// First dynamic array
int[] dynArray1;
dynArray1 = new int[arrayLength];
for (int i = 0; i < dynArray1.length; i++)
{
dynArray1[i] = (int) (Math.random() * 10);
}
System.out.println("First Array:");
for (int j = 0; j < dynArray1.length; j++)
{
System.out.println(dynArray1[j]);
}
// Second dynamic array
int[] dynArray2;
dynArray2 = new int[arrayLength];
for (int i = 0; i < dynArray2.length; i++)
{
dynArray2[i] = (int) (Math.random() * 10);
}
System.out.println("Second Array:");
for (int j = 0; j < dynArray2.length; j++)
{
System.out.println(dynArray2[j]);
}
// Third dynamic array
int thirdArrayLength = dynArray1.length + dynArray2.length;
int[] dynArray3;
dynArray3 = new int[thirdArrayLength];
for (int i = 0; i < dynArray3.length; i++)
{
}
}
}
我会打印第一个和第二个,但我认为这将是作弊,并不是我的任务所要求的。我打算用于循环Array1和Array2并打印结果。我不确定应该如何处理它。任何帮助将不胜感激。
编辑:这已经解决了!以下是代码: /* Third dynamic array */
int thirdArrayLength = dynArray1.length + dynArray2.length;
int[] dynArray3;
dynArray3 = new int[thirdArrayLength];
for (int i=0; i < dynArray1.length; i++) {
dynArray3[i] = dynArray1[i];
}
for (int i=0; i < dynArray2.length; ++i) {
dynArray3[i + dynArray1.length] = dynArray2[i];
}
System.out.println("Third Array:");
for (int i=0; i < dynArray3.length; ++i) {
System.out.println(dynArray3[i]);
}
答案 0 :(得分:1)
如果您使用的是Java-8,则可以使用Arrays
和System.arraycopy
:
vagrant up
<强>输出强>
//your array
int array1[] = {1, 4, 2, 6, 0};
int array2[] = {3, 6, 2, 1, 5};
//create a new array witch have length array1.length + array2.length
int array3[] = new int[array1.length + array2.length];
//copy the first array1 in array3
System.arraycopy(array1, 0, array3, 0, array1.length);
//copy the second array2 in array3
System.arraycopy(array2, 0, array3, array1.length, array2.length);
//display your arrays
System.out.println("Array 1:" + Arrays.toString(array1));
System.out.println("Array 2:" + Arrays.toString(array2));
System.out.println("Array 3:" + Arrays.toString(array3));
答案 1 :(得分:0)
一种选择是迭代前两个数组并填充第三个数组:
for (int i=0; i < dynArray1.length; i++) {
dynArray3[i] = dynArray1[i];
}
for (int i=0; i < dynArray2.length; ++i) {
dynArray3[i + dynArray1.length] = dynArray2[i];
}
// then print out the third array
for (int i=0; i < dynArray3.length; ++i) {
System.out.println(dynArray3[i]);
}
答案 2 :(得分:0)
一旦用户输入前两个数组,您就可以创建第三个数组。长度,然后在打印其内容的两个for
循环中,您还可以填充第三个数组。
在这种情况下,您必须注意第二个for
计数器,该计数器将从零开始但必须增加,因为已经填充了第三个数组的一部分。
我不会说更多,因为你说它的功课并且不想作弊:)。
答案 3 :(得分:0)
这是一个很好的Apache Commons库方法:http://commons.apache.org/proper/commons-lang/javadocs/api-3.1/org/apache/commons/lang3/ArrayUtils.html#addAll%28T%5B%5D,%20T...%29
int[] dynArray3 = (int[])ArrayUtils.addAll(dynArray1, dynArray2);
for(int i : dynArray3) {
System.out.println(i);
}
答案 4 :(得分:0)
您可以使用Java 8的stream
按顺序迭代两个数组,例如:
public static void main(String[] args) throws Exception{
int[] array1 = {1,2,4}, array2 = {4,5,6};
Stream.of(array1, array2)
.flatMapToInt(s -> Arrays.stream(s))
.forEach(System.out::println);
}
<强>更新强>
如果要合并/连接两个数组,则在此流中添加Collector
,这将生成一个列表,例如:
public static void main(String[] args) throws Exception{
int[] array1 = {1,2,4}, array2 = {4,5,6};
List<Integer> list = Stream.of(array1, array2)
.flatMapToInt(s -> Arrays.stream(s))
.boxed()
.collect(Collectors.toList());
}
这会为您提供Integer
的列表,然后您可以将其转换为int[]
数组,如下所示:
int[] array = new int[list.size()];
for(int i=0 ; i<list.size() ; i++){
array[i] = list.get(i);
}
答案 5 :(得分:0)
有两种(+1)可能性。
循环目标数组
你可以循环第三个数组(就像你现在一样),并使用if
,它可以帮助你确定是否应该访问第一个或第二个数组。
if (i > array1.length) {
array3[i] = array2[i - array1.length];
else
array3[i] = array1[i];
}
遍历两个源数组
或者您可以使用两个专用循环遍历第一个和第二个数组,并将它们的值分配给第三个数组。但是,迭代array2
的第二个循环必须使用偏移来索引第三个数组。
array3[i + array1.length] = array2[i];
Java8的Stream API
使用IntStream concat(IntStream a, IntStream b)
中的IntStream
来连接两个流,您可以使用java.util.Arrays.stream(int[])
创建这些流。