我想从我的字符串数组中获取任何非空值(从反向开始)。我想使用递归函数来实现我的目标。以下是我编写的代码示例。
protected string getInvNo(string[] arg, int lengthV)
{
if (arg[lengthV] != "")
return arg[lengthV];
else if (lengthV >= 0)
getInvNo(arg, lengthV-1);
else
return "";
}
显示错误并非所有路径返回值。请求帮助我,我想念的是什么。感谢。
答案 0 :(得分:1)
lengthV > 0
会将超出范围的索引修复为-1。
static string getInvNo(string[] arg, int lengthV)
{
if (arg[lengthV] != "")
{
return arg[lengthV];
}
return lengthV > 0 ? getInvNo(arg, lengthV - 1) : "";
}
答案 1 :(得分:1)
我建议您重新设计代码:
<property name="net.sf.jasperreports.export.xls.remove.empty.space.between.columns" value="true"/>
<property name="net.sf.jasperreports.export.xls.remove.empty.space.between.rows" value="true"/>
<property name="net.sf.jasperreports.export.xls.white.page.background" value="false"/>
<property name="net.sf.jasperreports.export.xls.wrap.text" value="true"/>
<property name="net.sf.jasperreports.print.keep.full.text" value="true"/>
return
getInvNo(arg, lengthV-1);
怎么办?如果我们必须跳过它以及清空null
一个,""
是选择string.IsNullOrEmpty
我可以继承你的类并使用任何参数调用方法我喜欢)protected
实现:
static
请注意,通常我们会在没有复发的情况下解决这些问题:
// static: you don't use "this" in the context, and the method is not a virtual one
protected static string getInvNo(string[] arg, int index)
{
// Validation
if (null == arg)
throw new ArgumentNullException("arg");
else if (index >= arg.Length)
index = arg.Length - 1; // or throw ArgumentOutOfRangeException("index");
// Stop conditions:
if (index < 0) // 1. Array exhausted
return "";
else if (!string.IsNullOrEmpty(arg[index])) // 2. We've found non-empty value
return arg[index];
return getInvNo(arg, index - 1);
}
答案 2 :(得分:-1)
回到这里:
if (arg[lengthV] != "")
return arg[lengthV];
else if (lengthV >= 0)
getInvNo(arg, lengthV-1);
return "this is your missing return value";
else
return "";