2014-02-20 3 views
1

그래서 병합 된 시퀀스를 인쇄하는 프로그램을 작성하고 있습니다. 순서를 인쇄 한 후에 빈 줄이 인쇄됩니다. 또한 프로그램은 병합 된 배열을 한 줄에 하나의 문자열로 인쇄합니다.2 배열을 결합하십시오.

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 
배열의 크기는 내가 지금까지 가지고 여기에 코드가없는 이상 10보다

이것은 제 출력물입니다. 누구든지이 문제를 도와 줄 수 있습니까? 감사합니다.

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

+1 최고의 숙제 질문! – Basilevs

답변

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]); 
     } 

는 모든 출력 루프 (모든 3 개 입력에 대해 서로 다른 인덱스 변수를 사용할 필요가 있고 즉로부터 index1, index2 및 INDEX3 루프 있습니다위한

for (int i = 0; i < index1; i++) { 
      System.out.println(input1[i]); 
     } 

될 것이다.

+0

도움을 주셔서 감사합니다, 그러나 나는 여전히 잘못된 출력을 얻을. 내 input1은 1 2 3 4 5이고 input2는 6 7 8 9 10이고 병합은 1 7 2 8 3 9 4 10 5였습니다. 1 6 2 7 3 8 4 9 5 10. 어떤 생각입니까? 다시 한 번 감사드립니다 – BBKay

+0

코드에서 실수였습니다. 코드를 업데이트했습니다. –

+0

나는 그것을 올바르게 얻었다. 매우 감사합니다. 나는 아직도 내 산출물에서 널을 얻는다. 고칠 생각이 있어요? – BBKay

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]도 사용할 수 있습니까? 사용하여 다음

관련 문제