我正在做一些初学者在c#上工作,与visual studio合作。我必须计算用户输入数组的最小数字。我需要手动编写代码。这就是我所拥有的相关内容。
public partial class Form1 : Form
{
//Declare and initialise variables to be used in app.
int[] markArray = new int[10]; //Declare an array of integers to hold entered user values
int arrayPointer = 0; //Declare array pointer - This will be incremented after each function is carried out, so that the next user entered number will be placed in the next index position in the array.
int lowestMark = 0; //Declare lowest mark
private void buttonAdd_Click(object sender, EventArgs e) //on a button click within the app
{
try //Test value enter is number
{
markArray[arrayPointer] = Convert.ToInt32(textEntry.Text); //Take value from text box and place in array cell if it is a int
}
catch //Catch non ints
{
MessageBox.Show("You must enter a number "); //if not int display error messsage
}
int lowestMark = markArray[0]; // Set variable "lowestMark" to the value in the first position of the array.
for (int i = 0; i < 10; i++)
{
if (markArray[i] < lowestMark) // if there is an index with a value lower than the value assigned to "lowestMark"
{
lowestMark = markArray[i]; //Set this new lower value as the "lowestMark"
}
}
arrayPointer++; //Increment array pointer
}
所以无论我摆弄它的哪种方式,lowestMark
的值总是与我声明它时给出的值相同。如果我在宣布它时set it to 100
,那么在运行时会显示为最低标记。所以看起来将它设置为数组中索引0中的值的行什么都不做。即使通过输入10个数字来填充数组中的每个索引,它仍然会读为0.我不知道为什么,这很奇怪,因为我想要做的事情似乎非常简单。
Enter a value into markArray
,index
由arrayPointer
决定,starts at 0.
Set lowestMark
在相同位置的相同值。增加arrayPointer,以便将下一个值输入索引1。
该程序还有一些其他小功能,它在按钮点击时执行,但我删除它们只保留不起作用的东西
答案 0 :(得分:3)
您正在将LowestMark重新声明为方法的局部变量。
int lowestMark = markArray[0];
如果要使用实例变量,请不要重新声明它。
lowestMark = markArray[0];
您的实例变量(也称为lowestMark
)正被局部变量屏蔽,因此其值永远不会改变。