static class Util
{
static Random ran = new Random();
public static List<Point3d> RandomptGenerator(int num)
{
List <Point3d> ptList = new List<Point3d>();
int count = num;
for (int i = 0;i < count;i++)
{
for (int j = 0;j < count;j++)
{
double x = i;
double y = j;
x = ran.Next(0, 40);
y = ran.Next(0, 30);
ptList.Add(new Point3d(x, y, 0.0));
return ptList;
}
}
}
}
大家好,
当我尝试编译此代码时,我收到以下错误:
我无法弄清楚为什么会发生这种情况......任何帮助都将受到赞赏。 谢谢!
答案 0 :(得分:3)
在你的代码中,你将在for循环中返回ptList。如果count为0,你将永远不会进入循环,会发生什么。
move return ptList;在循环之外。
答案 1 :(得分:2)
该函数应返回Point3d对象的List。但是不能保证for循环条件是真的(i&lt; count)并且根本就会达到return语句。这就是编译器抱怨的原因。
您应该将循环语句移动到循环之外,如下所示:
public static List<Point3d> RandomptGenerator(int num)
{
List<Point3d> ptList = new List<Point3d>();
int count = num;
for (int i = 0; i < count; i++)
{
for (int j = 0; j < count; j++)
{
double x = i;
double y = j;
x = ran.Next(0, 40);
y = ran.Next(0, 30);
ptList.Add(new Point3d(x, y, 0.0));
}
}
return ptList;
}
答案 2 :(得分:1)
您的函数应该返回List<Point3d>
。将它返回到循环之外
List<Point3d> ptList = new List<Point3d>();
int count = num;
for (int i = 0; i < count; i++)
{
for (int j = 0; j < count; j++)
{
double x = i;
double y = j;
x = ran.Next(0, 40);
y = ran.Next(0, 30);
ptList.Add(new Point3d(x, y, 0.0));
}
}
return ptList;
答案 3 :(得分:0)
如果你想生成num
个随机点(请注意,在你当前的代码中你创建了num * num
个点),你所要做的就是
static class Util
{
static Random ran = new Random();
public static List<Point3d> RandomptGenerator(int num)
{
// Create list...
List <Point3d> ptList = new List<Point3d>();
// ...fill it with values...
for (int i = 0;i < count; i++)
ptList.Add(new Point3d(ran.Next(0, 40), ran.Next(0, 30), 0.0));
// ...return the list
return ptList;
}
}
通常,我们使用 Linq 为我们生成列表:
using System.Linq
...
static class Util
{
static Random ran = new Random();
public static List<Point3d> RandomptGenerator(int num)
{
return Enumerable
.Range(0, num)
.Select(_ => new Point3d(ran.Next(0, 40), ran.Next(0, 30), 0.0))
.ToList();
}
}
答案 4 :(得分:0)
如果&#34;计数&#34;是0,它甚至不会在第一。因为i = 0且i&lt; 0为假。
试试这样:
@EnableJpaRepositories
private static class EnableJpaRepositoriesConfiguration {
}
答案 5 :(得分:0)
应该是bE:
public static List<Point3d> RandomptGenerator(int num)
{
List <Point3d> ptList = new List<Point3d>();
int count = num;
for (int i = 0;i < count;i++)
{
for (int j = 0;j < count;j++)
{
double x = i;
double y = j;
x = ran.Next(0, 40);
y = ran.Next(0, 30);
ptList.Add(new Point3d(x, y, 0.0));
}
}
return ptList; //<------Must be here!
}
答案 6 :(得分:0)
代码的问题是for循环。
它不会达到您的返回值。
如果您的值小于零。
<强>实施例强>
count =0;
for (int i = 0;i < count;i++) // the loop will end. when count is zero.
与你的内循环相同:
count =0;
for (int j = 0;j < count;j++) // the loop will end. when count is zero.
这就是你遇到错误的原因
检测到无法访问的代码,并非所有代码路径都返回值
您可以使用以下代码进行修复:
static Random ran = new Random();
public static List<Point3d> RandomptGenerator(int num)
{
var <Point3d> ptList = new List<Point3d>();
int count = num;
for (int i = 0;i < count;i++)
{
for (int j = 0;j < count;j++)
{
double x = i;
double y = j;
x = ran.Next(0, 40);
y = ran.Next(0, 30);
ptList.Add(new Point3d(x, y, 0.0));
}
}
return ptList;
}
答案 7 :(得分:0)
完美,返回ptList;处于错误的位置......这解决了问题,显然它是有道理的。
谢谢大家的回答