所以我正在编写一个程序来打印合并序列,假设只有两个输入。打印序列后,会打印一个空行。此外,该程序还打印合并后的数组,每行一个字符串。数组的大小不超过 10。这是我到目前为止的代码:
import java.util.Scanner;
public class Demo {
public static int readInput(Scanner myScanner, String[] input) {
boolean streamEnded = false;
int index = 0;
while (!streamEnded && myScanner.hasNext()) {
String value = myScanner.nextLine();
if (value.length() == 0) {
streamEnded = true;
input[index] = value;
} else {
input[index] = value;
index++;
}
}
return index;
}
public static void printArray(String[] values, int size) {
for (int index = 0; index < size; index++) {
System.out.println(values[index]);
}
public static void main(String[] args) {
int size = 10;
String[] input1 = new String[size];
String[] input2 = new String[size];
String[] merge = new String[size*2];
Scanner aScanner = new Scanner(System.in);
readInput(aScanner, input1);
readInput (aScanner, input2);
readInput (aScanner, merge);
for (int i = 0; i < input1.length; i++) {
System.out.println(input1[i]);
}
for (int i = 0; i < input2.length; i++) {
System.out.println(input2[i]);
}
for (int i = 0; i < merge.length; i++) {
if(i % 2 == 0) {
merge[i] = input1[i / 2];
System.out.println(store[i]);
} else {
merge[i] = input2[i / 2];
System.out.println(store[i]);
}
}
}
}
我的输入:
1
2
3
4
5
6
7
8
所以输出应该是:
1
5
2
6
3
7
4
8
这是我的输出。谁能帮我解决这个问题吗?谢谢
1
2
3
4
5
6
7
8
1
2
3
4
null
null
null
null
null
5
6
7
8
null
null
null
null
null
null
1
6
3
8
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10
at Demo.main(Demo.java:47)
null
null
null
null
null
最佳答案
尝试使用以下内容:
if(i % 2 == 0) {
merge[i] = input1[i/2];
} else {
merge[i] = input2[i/2];
}
对于更新后的代码,
readInput(aScanner, input1);
应该变成
int index1 = readInput(aScanner, input1);
对于所有readInputs然后输出循环
for (int i = 0; i < input1.length; i++) {
System.out.println(input1[i]);
}
应该变成
for (int i = 0; i < index1; i++) {
System.out.println(input1[i]);
}
对于所有输出循环(请注意,您需要为所有 3 个输入和循环使用不同的索引变量,即索引 1、索引 2 和索引 3。
关于java - 合并2个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21897599/