自己断点运行就可以,程序自动运行就出错,什么问题?
public class particles{
public ArrayList tempPart;
public particles()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
public void init(int Num, float width, float height, float xMin, float yMin)
{
Random r = new Random();
PointF partpoint = new PointF();
tempPart = new ArrayList();
for (int i = 1; i <= Num; i++)
{
partpoint.X = width * Convert.ToSingle(r.NextDouble()) + xMin;
partpoint.Y = height * Convert.ToSingle(r.NextDouble()) + yMin;
tempPart.Add(partpoint);
}
}
}
以上是我自己写的类里的函数,功能为随机生成点,然后存进ArrayList里。
以下是在主窗口里调用上面的类,功能为把类生成的ArrayList存进更高级的ArrayList里。
for (int i = 1; i <= partNum; i++) //初始化目标群
{
particles particle = new particles(); //初始化类
particle.init(Num, 200, 200, -100, -100);
arrParticle.Add(particle.tempPart);
}
现在的问题是
如果程序自动运行,arrParticle里存储的链表都是一样的。
如果是手动断点运行,arrParticle里存储的链表就会各个不同
不知道是我类里的随机数用错还是其他问题
希望各位能帮忙,等着救命。。。 --------------------编程问答-------------------- 有人能帮忙吗 --------------------编程问答-------------------- 帮不了
帮顶起吧 --------------------编程问答-------------------- 哪里断点了就看哪里改啊 --------------------编程问答-------------------- 和LZ一样
断点就可以执行
自动就不行啦
同求 --------------------编程问答-------------------- 整个程序发过来啦,这样子干看真要命!
--------------------编程问答-------------------- 这样看不出来错误呀,曾经也发生过这样的事情,最终结果还是发现程序其他地方有错误,一个JS造成的。。。。。。。 --------------------编程问答-------------------- 现在我怀疑随机数上的使用有问题,有高手会用随机数吗? --------------------编程问答-------------------- 帮你顶
--------------------编程问答-------------------- Random不要定义在循环体内
Random r = new Random();
for (int i = 1; i <= partNum; i++) //初始化目标群
{
particle.init(r,Num, 200, 200, -100, -100);
}
public void init(Random r, int Num, float width, float height, float xMin, float yMin)
{
} --------------------编程问答--------------------
感谢
但我类的循环体内的两个随机数是要求不同的而且每次循环都不同。
第2,如果这样做,我主程序里的 随机数的生成应该写到哪里? --------------------编程问答-------------------- if{isPostback)
{
}
--------------------编程问答-------------------- 你在出错语句的上一句写:System.Threading.Thread.Sleep(3000);试试,3000的单位是毫秒,大小你可以自己设 --------------------编程问答--------------------
对这个方法应该能解决的问题,这应该是线程处理的问题..在你出错的代码前加上这条代码. --------------------编程问答-------------------- 关键是没有出错,只是自动运行时得到的链表是错误的。。。。 --------------------编程问答-------------------- 期待· --------------------编程问答-------------------- 请大家帮帮忙 --------------------编程问答-------------------- 有人会吗 --------------------编程问答--------------------
public class particles
{
private Random r = new Random();
public ArrayList tempPart;
public particles()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
public void init(int Num, float width, float height, float xMin, float yMin)
{
PointF partpoint = new PointF();
tempPart = new ArrayList();
for (int i = 1; i <= Num; i++)
{
partpoint.X = width * Convert.ToSingle(r.NextDouble()) + xMin;
partpoint.Y = height * Convert.ToSingle(r.NextDouble()) + yMin;
tempPart.Add(partpoint);
}
}
}
使用:
--------------------编程问答-------------------- 我也遇到过类似问题,断点执行的和自动执行的结果不同,好像中断时改变了什么或丢失了什么 --------------------编程问答-------------------- 随机数 --------------------编程问答--------------------
particles particle = new particles(); //初始化类
for (int i = 1; i <= partNum; i++) //初始化目标群
{
particle.init(Num, 200, 200, -100, -100);
arrParticle.Add(particle.tempPart);
}
for (int i = 1; i <= partNum; i++) //初始化目标群
{
//这个要放在循环里面的,不然arrParticle里面的元素就全部都变成最后一次的值了
particles particle = new particles(); //初始化类
particle.init(Num, 200, 200, -100, -100);
arrParticle.Add(particle.tempPart);
}
补充:.NET技术 , C#