2014-02-20 168 views
1

所以我寫打印出合併後序列的程序,讓假設只有兩個輸入。打印完一個序列後,會打印一個空白行。此外,該程序打印每行一個字符串的合併數組。陣列的尺寸是不超過10。以下是代碼我迄今爲止:結合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 

這是我的輸出。任何人都可以幫我解決這個問題嗎?謝謝

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

應該成爲

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

所有輸出迴路(請注意,您需要使用不同的指標變量的所有3個輸入和循環即索引1,索引2和INDEX3。

+0

感謝您的幫助,但是我仍然得到錯誤的輸出。我的輸入1爲1 2 3 4 5和輸入2爲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]可以使用嗎?