还是让大虾们先看两个程序段吧?
---
先看我定义的数组:
//定义两个数组,用来装载题目的正确答案
string [] xzCorrectAnswer;
string [] tkCorrectAnswer;
//定义两个数组,用来装载用户做题的答案
string [] xzAnswer;
string [] tkAnswer;
---
方法一:
private void oneSubmitButton_Click(object sender, System.EventArgs e)
{
//初始化用户答案数组
countNumber cn=new countNumber ();
xzAnswer=new String [cn.counting ("xuan_ze")];
tkAnswer=new String [cn.counting ("tian_kong")]; bool isAnswer=false; if(tkList.SelectedIndex ==-1)
{
if (RadioButtonA.Checked)
{
xzAnswer[xzList.SelectedIndex-1]="a";
infoLabel.Text =infoLabel.Text +xzAnswer[xzList.SelectedIndex-1];
isAnswer=true;
RadioButtonA.Checked=false;
}
else if (RadioButtonB.Checked)
{
xzAnswer[xzList.SelectedIndex-1]="b";
infoLabel.Text =infoLabel.Text +xzAnswer[xzList.SelectedIndex-1];
isAnswer=true;
RadioButtonB.Checked=false;
}
else if (RadioButtonC.Checked)
{
xzAnswer[xzList.SelectedIndex-1]="c";
infoLabel.Text =infoLabel.Text +xzAnswer[xzList.SelectedIndex-1];
isAnswer=true;
RadioButtonC.Checked=false;
}
else if(RadioButtonD.Checked )
{
xzAnswer[xzList.SelectedIndex-1]="d";
infoLabel.Text =infoLabel.Text +xzAnswer[xzList.SelectedIndex-1];
isAnswer=true;
RadioButtonD.Checked=false;
}
else
{
isAnswer=false;
} if(!isAnswer)
{
infoLabel.Text ="你还没有选择答案(你必须指定某个选项为问题的正确答案)!!";
}
} if(xzList.SelectedIndex ==-1)
{
tkAnswer[tkList.SelectedIndex -1]=txtTianKong.Text ;
txtTianKong.Text ="";
if(txtTianKong.Text =="")
{
infoLabel.Text ="你还没有填写答案!!";
}
}
}
-----------------
方法二:
private void sButton_Click(object sender, System.EventArgs e)
{
//计算总分
countNumber cn=new countNumber (); int xzMarks=cn.countMarks (xzAnswer,xzCorrectAnswer,"xuan_ze");
if(xzMarks==0){infoLabel.Text ="选择题分数统计出现异常!";}
int tkMarks=cn.countMarks (tkAnswer,tkCorrectAnswer,"tian_kong");
if(tkMarks==0){infoLabel.Text =infoLabel.Text +"填空题分数统计出现异常!";}
int totalMarks=xzMarks+tkMarks; //获取用户名
string userName=txtTotalMarks.Text;
if(xzMarks!=0 && tkMarks!=0)
{
int insertResult=cn.insertMarks (totalMarks,userName); if(insertResult==0)
{
infoLabel.Text ="插入分数时出现异常!错误信息:数据库连接不成功。";
}
else if(insertResult==1)
{
infoLabel.Text ="插入分数成功!";
}
else if(insertResult==2)
{
infoLabel.Text ="插入分数失败!错误信息:插入分数时出现异常。";
}
else
{
infoLabel.Text ="插入分数失败!错误信息:出现了未知的错误。";
}
}
}
--------
在下面的回帖里面我将会对这两个方法做个具体的说明
^_^
---
先看我定义的数组:
//定义两个数组,用来装载题目的正确答案
string [] xzCorrectAnswer;
string [] tkCorrectAnswer;
//定义两个数组,用来装载用户做题的答案
string [] xzAnswer;
string [] tkAnswer;
---
方法一:
private void oneSubmitButton_Click(object sender, System.EventArgs e)
{
//初始化用户答案数组
countNumber cn=new countNumber ();
xzAnswer=new String [cn.counting ("xuan_ze")];
tkAnswer=new String [cn.counting ("tian_kong")]; bool isAnswer=false; if(tkList.SelectedIndex ==-1)
{
if (RadioButtonA.Checked)
{
xzAnswer[xzList.SelectedIndex-1]="a";
infoLabel.Text =infoLabel.Text +xzAnswer[xzList.SelectedIndex-1];
isAnswer=true;
RadioButtonA.Checked=false;
}
else if (RadioButtonB.Checked)
{
xzAnswer[xzList.SelectedIndex-1]="b";
infoLabel.Text =infoLabel.Text +xzAnswer[xzList.SelectedIndex-1];
isAnswer=true;
RadioButtonB.Checked=false;
}
else if (RadioButtonC.Checked)
{
xzAnswer[xzList.SelectedIndex-1]="c";
infoLabel.Text =infoLabel.Text +xzAnswer[xzList.SelectedIndex-1];
isAnswer=true;
RadioButtonC.Checked=false;
}
else if(RadioButtonD.Checked )
{
xzAnswer[xzList.SelectedIndex-1]="d";
infoLabel.Text =infoLabel.Text +xzAnswer[xzList.SelectedIndex-1];
isAnswer=true;
RadioButtonD.Checked=false;
}
else
{
isAnswer=false;
} if(!isAnswer)
{
infoLabel.Text ="你还没有选择答案(你必须指定某个选项为问题的正确答案)!!";
}
} if(xzList.SelectedIndex ==-1)
{
tkAnswer[tkList.SelectedIndex -1]=txtTianKong.Text ;
txtTianKong.Text ="";
if(txtTianKong.Text =="")
{
infoLabel.Text ="你还没有填写答案!!";
}
}
}
-----------------
方法二:
private void sButton_Click(object sender, System.EventArgs e)
{
//计算总分
countNumber cn=new countNumber (); int xzMarks=cn.countMarks (xzAnswer,xzCorrectAnswer,"xuan_ze");
if(xzMarks==0){infoLabel.Text ="选择题分数统计出现异常!";}
int tkMarks=cn.countMarks (tkAnswer,tkCorrectAnswer,"tian_kong");
if(tkMarks==0){infoLabel.Text =infoLabel.Text +"填空题分数统计出现异常!";}
int totalMarks=xzMarks+tkMarks; //获取用户名
string userName=txtTotalMarks.Text;
if(xzMarks!=0 && tkMarks!=0)
{
int insertResult=cn.insertMarks (totalMarks,userName); if(insertResult==0)
{
infoLabel.Text ="插入分数时出现异常!错误信息:数据库连接不成功。";
}
else if(insertResult==1)
{
infoLabel.Text ="插入分数成功!";
}
else if(insertResult==2)
{
infoLabel.Text ="插入分数失败!错误信息:插入分数时出现异常。";
}
else
{
infoLabel.Text ="插入分数失败!错误信息:出现了未知的错误。";
}
}
}
--------
在下面的回帖里面我将会对这两个方法做个具体的说明
^_^
xzCorrectAnswer和tkCorrectAnswer这两个数组是用来保存问题的正确答案的,xzAnswer和tkAnswer是用来保存用户的答案。
方法一主要就是为了将用户的答案记录下来(包括选择题和填空题),方法二主要是用来计算用户的得分情况。cn.countMarks是我另外编写的一个类里面计算分数的方法(这个比较简单就不说啦^_^)。
现在的问题是:
调试的时候 int xzMarks=cn.countMarks (xzAnswer,xzCorrectAnswer,"xuan_ze");不起作用。然后我在方法二里面加一条显示xzAnswer和tkAnswer数组内容的语句,调试时就会显示“未将对象的引用设置到实例”。怎么回事啊?
我已经在类里面定义了两个数组,然后在方法一里面进行了填充,然后在另外一个方法里面直接用不行么?以前也出过类似的问题,也搞不懂。
盼望高手指点……
----------
PS:题目分数比较低,原因是我这个菜鸟的分数就这么点了,呵呵,委屈大家了^_^
--------
呵呵,辛苦了。
我是怕说不明白,所以把代码弄出来让大家看一下。
呵呵
-----------------------------
ARRAYLIST和“数组”有什么分别啊?我对这个不是很熟悉阿。能不能再指点一下迷津啊?
用法和数组作为返回值的方法一样么?
数组的中元素的类型是固定的,比如:int[] a=new int[3];这条语句创建了一个可以存放三个整型数据的一维数组,数组里面只能存放整型,并且最多只能放三个。因为数组的长度在创建的时候就固定了,但ArrayList不会,ArrayList al=new ArrayList(3);这条语句创建了一ArrayList的列表对象,初始的元素个数为3,但是当你往其中存放第四个元素时,它的长度会自动增长以保证你的对象能够放入列表对象中