魅惑的谜团

yxp233 2009-02-24 04:08:25
我利用timer1每隔1秒生成一个随机数int T = rand.Next(1, 3),并保存到数组arr里边,共生成6个数(用timer2来控制:timer2的Internal=6000),并在textBox1中显示出来结果。

然后比较生成的这6个随机数:第一个和第三个比,第二个和第四个比,第三个和第五个比,第四个和第六个比;如果相同,则生成数字1并保存到数组C里边,如果不同,则生成数字2并保存到数组C里边。这样数组C就有四个元素。并在textBox2中显示出来结果。

问题出来了:不管arr的输出结果如何,数组C的结果总是2 2 2 2。举个例子,假如arr的结果是1 2 2 1 2 1,那么数组C应该是2 2 11,但textBox2显示出来的结果却是2 2 2 2。

请教各位大侠!帮忙找出问题所在!code:

namespace yu_men
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

ArrayList arr = new ArrayList();
ArrayList C = new ArrayList();

private void timer1_Tick(object sender, EventArgs e)
{
timer2.Tick += new EventHandler(timer2_Tick);
timer2.Interval = 6 * 1000;
timer2.Enabled = true;

Random rand = new Random();
int T = rand.Next(1, 3);
textBox0.Text = Convert.ToString(T);
arr.Add(T);
}

private void timer2_Tick(object sender, EventArgs e)
{
timer1.Dispose();
timer2.Dispose();
textBox0.Clear();
}

private void button1_Click(object sender, EventArgs e)
{
timer1.Interval = 1000;
timer1.Enabled = true;
}

private void button2_Click(object sender, EventArgs e)
{
foreach (int x in arr)
{
textBox1.Text = textBox1.Text + x + "\r\n";
}

for (int i = 0; i <= 3; i++)
{
if (arr[i + 2] == arr[i])
{
C.Add(1);
}

if (arr[i + 2] != arr[i])
{
C.Add(2);
}
}

foreach (int y in C)
{
textBox2.Text = textBox2.Text + y + "\r\n";
}
}

private void Form1_Load(object sender, EventArgs e)
{

}
}
}
...全文
157 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
rock29 2009-02-25
  • 打赏
  • 举报
回复
我觉得把ArrayList arr = new ArrayList();
ArrayList C = new ArrayList();
改成ArrayList int arr = new ArrayList();
ArrayList int C = new ArrayList();
就可以把?
止戈而立 2009-02-24
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 yxp233 的回复:]
引用 9 楼 min_jie 的回复:
arr[index]是object类型,对比值的话,应转成整型来对比。


min_jie,我还有个问题,如果在不关闭form的情况下,我想重复运行程序,比如生成一个repeat按钮,这样的话数组arr和C就会一直增加,比如第一次运行程序后,数组arr有6个元素,第二次运行后,数组arr就会有12个元素,我想要的是,不论重复多少次,数组arr始终都是6个,也就是说,程序运行第二次的时候,会自动把第一次运行得到的数组a…
[/Quote]

不好意思,没留意你第二个问题,按钮事件下:
arr.Clear();
yxp233 2009-02-24
  • 打赏
  • 举报
回复
请各位大哥救急阿!
yxp233 2009-02-24
  • 打赏
  • 举报
回复
各位大侠请看13楼的新问题啊!
yxp233 2009-02-24
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 min_jie 的回复:]
arr[index]是object类型,对比值的话,应转成整型来对比。
[/Quote]

min_jie,我还有个问题,如果在不关闭form的情况下,我想重复运行程序,比如生成一个repeat按钮,这样的话数组arr和C就会一直增加,比如第一次运行程序后,数组arr有6个元素,第二次运行后,数组arr就会有12个元素,我想要的是,不论重复多少次,数组arr始终都是6个,也就是说,程序运行第二次的时候,会自动把第一次运行得到的数组arr清空,请问这个怎么实现呢?

多谢了阿!
人工智能算法 2009-02-24
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 min_jie 的回复:]
C# code for (int i = 0; i <= 3; i++)
{
if (arr[i + 2] == arr[i])
{
C.Add(1);
}

if (arr[i + 2] != arr[i])
{
C.Add(2);
}
}
改成:
for (int i = 0; i <= 3; i++)
{

[/Quote]

的确, 对比它们的值 必须转换类型
yxp233 2009-02-24
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 min_jie 的回复:]
arr[index]是object类型,对比值的话,应转成整型来对比。
[/Quote]

你真强哥们!给你多加分
yxp233 2009-02-24
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 min_jie 的回复:]
arr[index]是object类型,对比值的话,应转成整型来对比。
[/Quote]

激动中!问题解决了!!我不是一个程序员,甚至都没学过c#,教授却天天让我编程,真郁闷!!!
止戈而立 2009-02-24
  • 打赏
  • 举报
回复
arr[index]是object类型,对比值的话,应转成整型来对比。
yxp233 2009-02-24
  • 打赏
  • 举报
回复
这个问题,难道无人能解吗??
yulx 2009-02-24
  • 打赏
  • 举报
回复
ljhklajlfkjlkajflk
止戈而立 2009-02-24
  • 打赏
  • 举报
回复
            for (int i = 0; i <= 3; i++) 
{
if (arr[i + 2] == arr[i])
{
C.Add(1);
}

if (arr[i + 2] != arr[i])
{
C.Add(2);
}
}
改成:
for (int i = 0; i <= 3; i++)
{
if ((int)arr[i + 2] == (int)arr[i])
{
C.Add(1);
}

if ((int)arr[i + 2] != (int)arr[i])
{
C.Add(2);
}
}
yxp233 2009-02-24
  • 打赏
  • 举报
回复
热心的人请进阿!
yxp233 2009-02-24
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 min_jie 的回复:]
Random rand = new Random();
声明成全局变量就OK了。
[/Quote]

试了,还是一样啊。数组arr没问题,是数组C出问题。
yxp233 2009-02-24
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 min_jie 的回复:]
Random rand = new Random();
声明成全局变量就OK了。
[/Quote]

我试试看,谢谢!
止戈而立 2009-02-24
  • 打赏
  • 举报
回复
Random rand = new Random();
声明成全局变量就OK了。
yxp233 2009-02-24
  • 打赏
  • 举报
回复
希望各位踊跃参与阿!结帖前会给帖子加分,拜托各位了!

110,570

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧