所以我正在编写一个打印出合并序列的程序,假设只有两个输入。打印序列后,打印空白行。此外,程序打印合并的数组,每行一个字符串。数组的大小不超过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
答案 0 :(得分:0)
我不会给你正确的代码,但这应该会让你思考正确的方向。这是您的代码的一部分:
for (int i = 0; i < merge.length; i++) {
if(i % 2 == 0) {
merge[i] = input1[i];
} else {
merge[i] = input2[i];
}
这段代码有什么办法可以将input2[2]
(例如)放在输出中吗?您使用input2[2]
的唯一方法是i==2
。但是后来i%2 == 0
所以只有if
的第一个分支才被执行。同样,input1[3]
可以使用吗?
答案 1 :(得分:0)
尝试使用以下内容:
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个输入和循环使用不同的索引变量,即index1,index2和index3。