并非所有的路径都有返回值。。

普特里斯 2011-08-22 10:01:45
private int OtherScoreVal(string a , string q)
{
string A = AnswerToDisplay(a);
string Q = AnswerToDisplay(q);
char[] ma = A.ToCharArray();
char[] mq = Q.ToCharArray();
int count = 0;
char[] recount = { };

if (a == "")
{
return 0;
}

if (ma.Length > mq.Length)
{
return 0;
}

for (int i = 0; i < ma.Length; i++)
{
for (int j = 0; j < mq.Length; j++)
{
if (ma[i] == mq[j])
{
A = A.Remove(A.IndexOf(mq[j]), 1);
break;
}
}
}

for (int i = 0; i < mq.Length; i++)
{
for (int j = 0; j < ma.Length; j++)
{
if (mq[i] == ma[j])
{
Q = Q.Remove(Q.IndexOf(ma[j]), 1);
break;
}
}
if (A.Length == 0 && Q.Length == 0)
return 1;

if ((A.Length != 0 && Q.Length != 0) || (A.Length == 0 && Q.Length != 0))
return 0;

if (A.Length != 0 && Q.Length == 0)
{
int length = 0;
length = ma.Length - A.Length;
return length;

if (length == mq.Length)
{
return length;
}

}
return 0;




}
}
}


报错显示并非所有的代码路径都返回值。。但是我设置了的啊
...全文
77 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ttiimm11 2011-08-22
  • 打赏
  • 举报
回复
这样写的,看起来很费解让人
最后一个循环for (int i = 0; i < mq.Length; i++)会执行吗?无论怎么样都return 0了, 还要i++干吗?
最后一个if,写在retur之后,就不能运行了。
系统提示的很清楚,就是你的代码有可能一种情况会没有返回值。比如说前两个if不满足,第一个循环被break了,最后一个大循环mq.Length<=0了,就没有返回值了。

你不是设置了一个INT的count变量吗,不要每一步都return,把每一步的return改成为count赋值,最后return count不就可以了吗
普特里斯 2011-08-22
  • 打赏
  • 举报
回复
3Q,3Q~
syx151 2011-08-22
  • 打赏
  • 举报
回复
所有if的最外面少一个return
暖枫无敌 2011-08-22
  • 打赏
  • 举报
回复
private int OtherScoreVal(string a , string q)
{
string A = AnswerToDisplay(a);
string Q = AnswerToDisplay(q);
char[] ma = A.ToCharArray();
char[] mq = Q.ToCharArray();
int count = 0;
char[] recount = { };

if (a == "")
{
return 0;
}

if (ma.Length > mq.Length)
{
return 0;
}

for (int i = 0; i < ma.Length; i++)
{
for (int j = 0; j < mq.Length; j++)
{
if (ma[i] == mq[j])
{
A = A.Remove(A.IndexOf(mq[j]), 1);
break;
}
}
}

for (int i = 0; i < mq.Length; i++)
{
for (int j = 0; j < ma.Length; j++)
{
if (mq[i] == ma[j])
{
Q = Q.Remove(Q.IndexOf(ma[j]), 1);
break;
}
}
if (A.Length == 0 && Q.Length == 0)
return 1;

if ((A.Length != 0 && Q.Length != 0) || (A.Length == 0 && Q.Length != 0))
return 0;

if (A.Length != 0 && Q.Length == 0)
{
int length = 0;
length = ma.Length - A.Length;
return length;

if (length == mq.Length)
{
return length;
}
}
}
return 0; //最外层没有返回值
}

110,566

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧