我正在使用以下逻辑/算法创建报告:
考虑以下因素:
我有一个静态功能:
static int nCalc()
{
int n;
for(n=1; n<=200; n++)
{
if (n == 1)
{
fileOut.WriteLine("{0}", n);
}
else if (n % 2 == 0)
{
n = 3 * n + 1;
}
else
{
n = n / 2;
}
return n;
}
}
我得到了:
CS0161 - not all code paths return a value
这是我迷失的地方。其他每个人都应该返回bool值吗?我可能没有正确的算法。
我将基本上使用此算法循环遍历从1到200的每个数字。所以我应该有n出局如:
fileOut.WriteLine(" N RCL N RCL N RCL N RCL N RCL N RCL N RCL");
fileOut.WriteLine("--- --- --- --- --- --- --- --- --- --- --- --- --- ---");
如果在N以下,我会在RCL下有1,2,3,4,在我的数字旁边,我会有1,2,8,3等。
谢谢,
答案 0 :(得分:1)
static int nCalc()
{
int n;
for(n=1; n<=200; n++)
{
if (n == 1)
{
fileOut.WriteLine("{0}", n);
}
else if (n % 2 == 0)
{
n = 3 * n + 1;
}
else
{
n = n / 2;
}
}
return n;
}
return
在循环之外
答案 1 :(得分:0)
你想做的事情不清楚,但要回答你的问题:
static int nCalc()
{
for(...)
{
...
return n;
}
// If the code gets here there is no return.
// The compiler doesn't know the code can't get here hence the error
}
答案 2 :(得分:0)
将return
语句移出for
循环:
static int nCalc()
{
int n;
for(n = 1; n <= 200; n++)
{
if (n == 1)
{
fileOut.WriteLine("{0}", n);
}
else if (n % 2 == 0)
{
n = 3 * n + 1;
}
else
{
n = n / 2;
}
}
return n;
}
正如最初编写的那样,在if
循环执行完毕之前,您正在返回for
块,因此发出警告。
答案 3 :(得分:0)
我认为你打算这样做
static void Main()
{
for(int n=1;n<=200;n++)
{
fileOut.WriteLine("{0}",Calc(n));
}
}
static int Calc(int n)
{
int result;
if (n == 1)
{
result = 0;
}
else if (n % 2 == 0)
{
result = 3 * n + 1;
}
else
{
result = n / 2;
}
return result;
}
答案 4 :(得分:0)
方法应始终具有可在任何条件下执行的return语句。在你的情况下,return语句在for循环中,如果不满足循环条件,最终将无法执行。
将return语句移出循环可以解决您的问题。
static int nCalc()
{
int n;
for(...)
{
...
}
return n;
}