2015-12-02 52 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];