【发布时间】:2015-11-27 01:49:41
【问题描述】:
我被指示创建一个使用嵌套循环和 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
任何可以提供帮助的人都会真正成为救生员,谢谢...
【问题讨论】:
-
负载“什么都不做”是什么意思。你期待它做什么?它填充数组并添加一些换行符。
-
添加
Try{/*Your code inside btnSearchArray_Click here*/}catch(Exception ex){MessageBox.Show(string.Format("r: {0},c: {1}",r.ToString(),c.ToString()))} -
@Pau808 添加
Try...Catch...就可以知道是哪个索引出错了。 -
别这样,这不是异常处理的目的。
-
是的...但是你应该在调试后删除它...也请使用断点..