我被指示创建一个使用嵌套循环和2D数组的乘法表,并且已经使用了好几天。该表有3个功能:加载阵列,显示阵列和搜索阵列。我对循环没有经验,但我想我完成了那部分。但是,虽然没有显示错误,但是当我调试/运行程序时,“加载数组”按钮什么都不做,“显示数组”按钮显示9个数字顶部,然后出现“超出范围”的例外;当我点击“搜索数组”时,它只有在我输入“0”时才有效...它应该搜索数组中所有出现的数字作为文本框中的搜索条件输入。我认为添加try-catch块可能有所帮助,但不确定如何解决其他问题......
这是我的代码:
namespace CS12c
{
public partial class frmCS12c : Form
{
int [ , ] intTable = new int[9,9]; // 9 x 9 table
public frmCS12c()
{
InitializeComponent();
}
private void btnLoadArray_Click(object sender, EventArgs e)
{
int r; //row
int c; //column
int intResult; //result
//Index references begin at zero
for (r = 0; r < intTable.GetLength(0); r++) //Use intTable.GetLength(0) and intTable.GetLength(1) to control processing
{
for (c = 0; c < intTable.GetLength(1); c++) //Add 1 to the indexes before multiplying to build multiplication table
{
intResult = (r + 1) * (c + 1);
intTable[r, c] = intResult;
}
txtTable.AppendText("\r\n");
}
}
//Modify the nested for loops used above to nested while loops
private void btnDisplayArray_Click(object sender, EventArgs e)
{
int r; //row
int c; //column
string strSpace;
txtTable.Clear(); //clear the text box
for (r = 0; r < 9; r++)
{
for (c = 0; c < 9; r++)
{
if (intTable[r, c] < 10)
strSpace = " "; //two spaces
else
strSpace = " "; //one space
txtTable.AppendText(strSpace); // insert space
txtTable.AppendText(intTable[r, c].ToString()); //insert result
}
txtTable.AppendText("\r\n"); //Move down one line
}
}
private void btnSearchArray_Click(object sender, EventArgs e)
{
int r; //row
int c; //column
int intSearchNumber; //Search number
txtTable.Clear(); //clear the text box
//Not enclosed in a try-catch; make you enter a number in textbox
intSearchNumber = int.Parse(txtSearchNumber.Text);
//In search display all occurences that match the search numbers
for (r = 0; r < intTable.GetLength(0); r++)
{
for (c = 0; c < intTable.GetLength(1); c++)
{
if (intSearchNumber == intTable[r, c])
txtTable.AppendText(intTable[r, c].ToString() + " is located in " + r + ", " + c);
}
txtTable.AppendText("\r\n");
}
}
private void btnExit_Click(object sender, EventArgs e)
{
this.Close();
}
}//end of form
}//end of namespace
任何可以提供帮助的人都会真正成为一个救生员,谢谢......
答案 0 :(得分:1)
“加载数组”按钮不执行任何操作
实际上btnLoadArray_Click
方法做了一些事情 - 填充了intTable
数组。它在视觉上没有做任何有用的事情,所以如果它需要显示某些内容,你必须为此编写一些代码。
“display array”按钮在顶部显示9个数字,然后出现“超出范围”异常
在btnDisplayArray_Click
处理程序中,以下行有错误
for (c = 0; c < 9; r++)
注意r++
?将其更改为c++
,问题就消失了。
当我点击“搜索数组”时,它仅在我输入“0”时有效...它应该在数组中搜索在文本框中作为搜索条件输入的所有出现的数字。
我在btnSearchArray_Click
方法中没有发现任何问题,它按预期工作。
实际上,如果您没有将btnLoadArray_Click
方法附加到相应的按钮Click
事件,则问题#1和#3可能会相关。打开表单designer.cs并确保有一行类似于
this.btnLoadArray.Click += new System.EventHandler(this.btnLoadArray_Click);