当前位置:编程学习 > C#/ASP.NET >>

自己断点运行就可以,程序自动运行就出错,什么问题?

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)
  {
} --------------------编程问答--------------------
引用 9 楼 cja03 的回复:
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, floa……


感谢
但我类的循环体内的两个随机数是要求不同的而且每次循环都不同。
第2,如果这样做,我主程序里的 随机数的生成应该写到哪里? --------------------编程问答-------------------- if{isPostback)
{

}
--------------------编程问答-------------------- 你在出错语句的上一句写:System.Threading.Thread.Sleep(3000);试试,3000的单位是毫秒,大小你可以自己设 --------------------编程问答--------------------
引用 12 楼 yanhang1589 的回复:
你在出错语句的上一句写: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);
    
  }
--------------------编程问答-------------------- 我也遇到过类似问题,断点执行的和自动执行的结果不同,好像中断时改变了什么或丢失了什么 --------------------编程问答-------------------- 随机数 --------------------编程问答--------------------
引用 18 楼 starts_2000 的回复:
C# code
public class particles
  {
  private Random r = new Random();
  public ArrayList tempPart;
    
  public particles()
  {
  //
  // TODO: 在此处添加构造函数逻辑
  //
  }

  public void init(i……



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#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,