我的代码返回几个空值,我无法弄清楚原因

时间:2014-12-05 15:50:58

标签: null

我的任务是创建一个方法,该方法返回一个子字符串,该子字符串由存储在给定字符串中的数组字符数中的值组成,因此假设该数组为{4,2,3,2,0}且字符串是" radon",然后代码应返回{" Rado"," Ra"," Rad"," Ra& #34;,"" }。我的代码返回{" Rado"," null"," null"," null"," null" }

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

2 个答案:

答案 0 :(得分: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;
} 
}

答案 1 :(得分: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;
}