我试图编写一个控制台应用程序,从客户端获取一个整数,并检查这个数字是否可以分层,即可以表示为
number = d + dd + ddd + ... + dd...ddd
其中d是某个数字。例如
36 = 3 + 33
861 = 7 + 77 + 777
335 - can't be represent in d + dd + ddd
这就是Ido,但我有一个错误"不是所有代码路径都返回一个值">
using System;
namespace nn
{
class Program
{
static void Main(string[] args)
{
}
public static int N()
{
Console.WriteLine("Input integer");
//ask user to input integer
int n = int.Parse(Console.ReadLine());
for (int d = 1; d <= 9; d++)
{
var s = d;
var c = d;
while (s < n)
{
c = 10 * c + d; // generates dd, ddd, ...
s += c;
}
if (s == n)
{
return d;
}
else
{
return -1;
}
}
}
}
}
由于错误不言自明,函数N()
的返回类型为int
,并且您的代码在for
循环后不会返回整数。为了解决这个问题,在for循环的右括号后返回整数,
public static int N()
{
Console.WriteLine("Input integer");
//ask user to input integer
int n = int.Parse(Console.ReadLine());
for (int d = 1; d <= 9; d++)
{
var s = d;
var c = d;
while (s < n)
{
c = 10 * c + d; // generates dd, ddd, ...
s += c;
}
if (s == n)
{
return d;
}
else
{
return -1;
}
}
return -1; //This is missing return statement.
}