2015-12-02 53 views
-1

在編碼蝙蝠我的代碼是在Java AP-1部分是listed-從編碼蝙蝠我mergeTwo代碼應該工作而沒有

public String[] mergeTwo(String[] a, String[] b, int n) { 
String[] newArray = new String[n]; 
int i = 0; 
int j = 0; 
for(int x = 0; x < n; x++){ 
if(a[i].compareTo(b[j]) < 0){ 
newArray[x] = a[i++]; 
} 
else if(a[i].compareTo(b[j]) > 0){ 
newArray[x] = b[j++]; 
} 
else if(a[i].compareTo(b[j]) == 0){ 
newArray[x] = a[i++]; 
} 
} 
return newArray; 
} 

出於某種原因,這是行不通的。當查看其他人的代碼時,它應該做同樣的事情,但它只返回兩個正確答案。當我改變else時,如果只是其他代碼拒絕運行。我用一個while循環和一個int r作爲索引號(現在是x)來嘗試,然後沒有任何變化。我只是不確定有什麼不同。如果有人能解釋我爲什麼會非常感激。

+0

也許你還需要'j ++'時'compareTo(..)== 0'? – Kenney

+1

而這與'batch-file'是如何相關的,它只針對Windows/DOS上的'.BAT'文件?另外,你真的沒有任何縮進代碼? – wOxxOm

回答

0

我懷疑問題在於你沒有處理如果代碼遍歷所有一個String []並且只剩下另一個String []中的數字會發生什麼情況。您需要解決如果i或j沒有在字符串數組中引用合法索引會發生什麼情況。

此外,它似乎參數「n」應該是兩個數組中的字符串總數。最好是在MergeTwo類中計算n:

public String[] mergeTwo(String[] a, String[] b) { 
    n = a.length + b.length; 
    String[] newArray = new String[n];