将用户输入的文本框输入(数字)放入定义的数组大小中并输出?

3

这是我的C#书中的“作业”。

应该发生的是,在文本框上,用户输入10个数字(我会一个一个地输入),每次点击“addValBtn”按钮时,它都应该将该数字添加到数组中,直到用10个用户输入的数字填满10个位置。然后,我试图通过displayValBtn显示该数组(我可以自己解决),但我只是无法使这个该死的数组正确工作。

我的书很好地解释了如何设置数组,并且从Stackoverflow和Google上阅读的内容来看,人们提出了类似的问题。但是,他们似乎没有每次单击按钮时都接受输入。所以我不知道该怎么做。

我创建并定义了我的数组为numArray(使用double)-将我的数组索引设置为10。然后,我进行了for循环,以便它应该将文本框中的数字解析成数组。但是,当我运行时什么也没发生。(或者就我所知,它正在工作,我只是没有显示它回来,以查看它是否存储了数字)

1)对于这种情况,我是否做得正确? 2)由于需要通过按钮显示填充后的数组内容,因此我的变量需要全局吗?

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

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

    private void exitBtn_Click(object sender, EventArgs e)
    {
        this.Close();
    }

    public void addValBtn_Click(object sender, EventArgs e)
    {
       double[] numArray = new double[10];

       for (int index = 0; index < numArray.Length; index++)
       {
        numArray[index] = int.Parse(intTxtBox.Text);
       } 
    }

    private void displayValBtn_Click(object sender, EventArgs e)
    {

    }
}
}
2个回答

1
我在这种情况下做得对吗?
有点对,但也不完全正确 :) 你用于解析输入的代码很好,但你只是将数组的所有10个值分配给同一个数字。
此外,你的数组作用域仅限于addValBtn_Click方法,这意味着它在该事件处理程序结束后就不会存在了。
由于我需要通过按钮显示填充后的数组内容,所以我的变量需要是全局的吗?
正如我之前提到的,你的数组不会一直存在。你走在正确的道路上,但它不需要是全局变量,只需要是类级别的Form 你需要声明你的数组一次,然后在点击按钮时不断向其中添加值。确保也要跟踪你正在使用哪个索引。
我在类中声明了我的“index”:int index = 0; 它告诉我字段'array.array.index'从未被分配过值。这对我来说真的没有意义,因为我已经给它赋了一个值!

确保你在正确的位置声明了这个。如果你已经做了你所说的一切,你的类声明应该看起来像这样:

public partial class array : Form
{
   private const int MAX_ITEMS = 10;
   private int _currentIndex = 0;
   private double[] _numArray = new double[MAX_ITEMS];

   //SNIP...
}

这方面应该没有什么问题。如果有的话,那我可能得站在你肩膀旁边才能帮到你 :)


啊好的,这就是我想的!那么我要在类Form中声明我的数组。然后我的索引也必须在Form类中声明,并赋一个值0? - drowningincoffee
@Chris - 你明白了。只需记得每次增加值,并进行检查以确保不会超出数组范围。if(i < arr.Length){ //do stuff }我还想补充一点,你应该避免像 [10] 这样的魔术数字。最好创建一个有意义名称的常量,如 const int MAX_ITEMS = 10。这样做可以使计算更容易,代码以后也更易于理解。 - Josh
好的,谢谢你 - 实际上我最初使用了一个常量(我的书告诉我如何声明数组),但在尝试回答这里的其他问题后,我最终将其更改为现在的样子。好的,还有更多错误(和我一起工作,我是个新手哈哈) - 我在类中声明了我的“index”,如下所示:int index = 0;,它告诉我未分配字段“array.array.index”。对我来说真的没有什么意义,因为我已经给它赋了一个值! - drowningincoffee

0

你需要对事件驱动编程进行一些研究。

for (int index = 0; index < numArray.Length; index++)
{
    numArray[index] = int.Parse(intTxtBox.Text);
} 

这将在数组的每个位置读取相同的整数。

您需要在类中存储“索引”,然后执行类似以下操作:

if (this.index < 10)
{
    numArray[this.index] = int.Parse(intTxtBox.Text);
    this.index++
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接