将文本框输入添加到数组

照片123

成员
已加入
2020年2月11日
留言内容
18
编程经验
Beginner
在我的表单中,我有以下代码:

整型 [] totalScoreArray = new int [20];
整型 intScoreCount = 0;

对于我的作业,我需要:修改“添加”按钮的Click事件处理程序,以便将用户输入的分数添加到数组中的下一个元素。为此,您可以使用分数计数变量来引用该元素。

我遇到的问题:所有分数都输入到我在名为txtScore的表单中拥有的文本框中。我知道要将项目添加到数组中,只需放置数组名称,然后编写.Add();即可。但是,在这里我不确定使用什么,因为我是在输入文本框而不是实际数字。所以我知道我不能写totalScoreArray.Add(txtScore.Text);但这就是我想要做的,这意味着我想将在txtScore文本框中输入的分数记入下一个元素。我不确定如何执行此操作,也不确定要解决该问题的方法。我尝试了数组C#,但发现的示例使用了List<TextBox>myTextboxList =新列表<TextBox>();。我不能使用List,因为我的指示要我使用常规数组来编写它。有人可以帮我吗? *不,我不是想得到答案,我很想理解这一点。
 

金西尼

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
3,563
地点
悉尼,澳大利亚
编程经验
10+
我知道要将项目添加到数组中,只需放置数组名称,然后编写.Add();即可。
你不知道这样的事。这就是您添加到集合的方式,例如一种 列表 <T>,但您在此处使用的是数组,而不是集合。

可以将阵列想象成一个鸡蛋纸盒。所有元素都已经存在,但是默认情况下为空。您没有添加任何项目。您设置一个元素。您可以通过提供索引来指定要设置的元素。那就是 整型 如作业所述,变量是用于。它以0开头,因此您将设置第一个元素。每次设置元素时,都要递增该变量,下一次将引用下一个元素。设置所有20个元素后,数组实际上已满。

A 文本框 包含文本,表示为 细绳 。你需要得到 细绳 ,将其转换为 整型 然后将该数字添加到数组中。
 

照片123

成员
已加入
2020年2月11日
留言内容
18
编程经验
Beginner
你不知道这样的事。这就是您添加到集合的方式,例如一种 列表 <T>,但您在此处使用的是数组,而不是集合。

可以将阵列想象成一个鸡蛋纸盒。所有元素都已经存在,但是默认情况下为空。您没有添加任何项目。您设置一个元素。您可以通过提供索引来指定要设置的元素。那就是 整型 如作业所述,变量是用于。它以0开头,因此您将设置第一个元素。每次设置元素时,都要递增该变量,下一次将引用下一个元素。设置所有20个元素后,数组实际上已满。

A 文本框 包含文本,表示为 细绳 。你需要得到 细绳 ,将其转换为 整型 然后将该数字添加到数组中。
首先,我将字符串从文本框中转换为int。
整型 ScoreCount = Convert.ToInt32(txtScore.Text);

然后我做了一个for循环

//我从0开始,确保长度小于20,因为从0开始计数,然后在索引0中添加了用于将字符串转换为int的变量,最后我增加了count变量
for(intScoreCount = 0; totalScoreLength< 20)
totalScoreArray [0] = intScoreCount;
整型 ScoreCount ++;
 

羊皮

退休程序员
工作人员
已加入
2018年9月5日
留言内容
1,979
地点
英国
编程经验
10+
无论代码量多么小,请记住在发布代码时使用代码标签。

Add your variables:
        private int [] totalScoreArray = new int [20];
        private int intScoreCount = 0;
        private int i = 0;
添加按钮单击事件:
private void button1_Click(object sender, EventArgs e)
        {
   
        }
在您的按钮点击事件中,检查我是否小于20:
if (i < 20)
                //Additional checks here
            else
                MessageBox.Show("Empty it first", "Scoreboard full", MessageBoxButtons.OK);
有关其他检查,请查看用户是否首先通过解析文本框键入了数字:
                if (int.TryParse(textBox1.Text, out int isNumber))
                {
                    totalScoreArray[i] = isNumber;
                    i++;
                }
                else
                    MessageBox.Show($"{textBox1.Text} is not a number, check and try again.", "Wrong value provided", MessageBoxButtons.OK);
完成的结果应如下所示:
        private int [] totalScoreArray = new int [20];
        private int intScoreCount = 0;
        private int i = 0;

        private void button1_Click(object sender, EventArgs e)
        {
            if (i < 20)
                if (int.TryParse(textBox1.Text, out int isNumber))
                {
                    totalScoreArray[i] = isNumber;
                    i++;
                }
                else
                    MessageBox.Show($"{textBox1.Text} is not a number, check and try again.", "Wrong value provided", MessageBoxButtons.OK);
            else
                MessageBox.Show("Empty it first", "Scoreboard full", MessageBoxButtons.OK);
        }
您可以有选择地合并if语句,以保持简洁。我没有't并将它们分开,以简化理解:
            if (i < 20 && int.TryParse(textBox1.Text, out int isNumber))
此外,合并if语句还意味着您需要确定是否由于文本框解析失败或数组已满而不满足条件。如果您有任何疑问,我相信他们会在这里为您提供建议。
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,605
地点
弗吉尼亚州切萨皮克
编程经验
10+
我觉得 @谢平 is probably distracted by the ton of work he's got to deal with. So minor correction to the code above. Instead of using i, you'll actually want to use 整型 ScoreCount. Updated code below:
C#:
private int [] totalScoreArray = new int [20];
private int intScoreCount = 0;

private void button1_Click(object sender, EventArgs e)
{
    if (intScoreCount < 20)
        if (int.TryParse(textBox1.Text, out int isNumber))
        {
            totalScoreArray[intScoreCount] = isNumber;
            intScoreCount++;
        }
    else
        MessageBox.Show($"{textBox1.Text} is not a number, check and try again.", "Wrong value provided", MessageBoxButtons.OK);
    else
        MessageBox.Show("Empty it first", "Scoreboard full", MessageBoxButtons.OK);
}
 

羊皮

退休程序员
工作人员
已加入
2018年9月5日
留言内容
1,979
地点
英国
编程经验
10+
大声笑不,实际上,我离开那是为了改变自己。多亏了Skydiver,您的作业才得以完成。  :哈哈:
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,605
地点
弗吉尼亚州切萨皮克
编程经验
10+
耶!我会得到金星吗?
黄金640x400.jpg
 

羊皮

退休程序员
工作人员
已加入
2018年9月5日
留言内容
1,979
地点
英国
编程经验
10+
我不惊讶您没有错过未使用的变量。鹰眼!

我过去经常在DIC上做很多事情,而忽略了主要变量,人们常常忽略了它。教他们如何改编代码,并给他们做一些事情。

我们的OP应该阅读他们正在使用的方法/数据类型的文档,以便更好地熟悉它们的工作方式,否则将导致您不会被第二篇文章所吸引。
 

照片123

成员
已加入
2020年2月11日
留言内容
18
编程经验
Beginner
首先,我将字符串从文本框中转换为int。
整型 ScoreCount = Convert.ToInt32(txtScore.Text);

然后我做了一个for循环

//我从0开始,确保长度小于20,因为从0开始计数,然后在索引0中添加了用于将字符串转换为int的变量,最后我增加了count变量
for(intScoreCount = 0; totalScoreLength< 20)
totalScoreArray [0] = intScoreCount;
整型 ScoreCount ++;
嘿跳伞者,Sheepings和jmcilhinney感谢您的帮助!当我说错话时,我真的很感谢你们纠正我。 jmcilhinney我确保写下您的鸡蛋纸箱示例,但从未想到过,您使它变得非常简单!
 
最佳 底部