2014-12-05 58 views
0

我的任务是创建一个方法,该方法返回由存储在数组中的字符数组成的字符串组成的字符串,因此可以说,数组为{4,2,3,2,0},字符串为“氡”,代码​​应该以{“Rado”,“Ra”,“Rad”,“Ra”,“”}返回。我的代码返回与{“雷达”,“空”,“空”,“空”,“空”}我的代码返回几个空值,我无法弄清楚为什么

public static String[] stringHeads(int[] a, String b) 
{ 
int i=0; 
String[] c= new String[a.length]; 
if (((b.length() > 0) && (i) < a.length)) 
{ 
c[i] = b.substring(0,a[i]); 
i=i+1; 
} 
else if (a[i]> b. length()) 
{ 
c[i] = b; 
i++; 
} 
else 
{ 
c[i] = b.substring(0,0); 
i++; 
} 
return c; 
} 

回答

0

你需要做的是一段时间内的或循环或者你可以调用递归性。 您编写的代码只是运行ONCE而不进行迭代。 例如,你可以这样做:

for(int i=0;i<a.size();i++) 
{ 
String[] c= new String[a.length]; 
if (((b.length() > 0) && (i) < a.length)) 
{ 
c[i] = b.substring(0,a[i]); 
} 
else if (a[i]> b. length()) 
{ 
c[i] = b; 
} 
else 
{ 
c[i] = b.substring(0,0); 
} 
return c; 
} 
} 
0

你忘了迭代所需的字符串长度的输入数组。由于您已经添加了一些计数变量,我们可以简单地使用它并添加两行代码,如下所示。

public static String[] stringHeads(int[] a, String b) 
{ 
int i=0; 
String[] c= new String[a.length]; 
while (i < a.length) { // loop here 
if (((b.length() > 0) && (i) < a.length)) 
{ 
c[i] = b.substring(0,a[i]); 
i=i+1; 
} 
else if (a[i]> b. length()) 
{ 
c[i] = b; 
i++; 
} 
else 
{ 
c[i] = b.substring(0,0); 
i++; 
} 
} // end while 
return c; 
} 

已经采取细看到你的代码后,我想这是肯定地说,它可以简化,因为你可能会放弃所有检查字符串长度为String.substring已经不适合您。

public static String[] heads(int[] lens, String input) { 
    String[] ret = new String[lens.length]; 

    for (int index = 0; index != lens.length; ++index) { 
     ret[index] = (input.substring(0, lens[index])); 
    } 

    return ret; 
} 
相关问题