问题描述
我是为了设计多选题的答案,按照要求少选应该可以得一半的分数.如标准答案为BCD,以下是我的设计代码:'提取多选题答案(),并判分Dimc1AsCheckBox=NewCheckBox()Dimc2AsCheckBox=NewCheckBox()Dimc3AsCheckBox=NewCheckBox()Dimc4AsCheckBox=NewCheckBox()DimarrSTDD()AsStringDimanDDAsString=""DimarrDDAsArrayList=NewArrayList()DimarrDD2AsArrayList=NewArrayList()DimarrDBZAsArrayList=NewArrayList()Dimcj2AsInteger=0DimfsAsInteger=0DimcAsStringDimcwAsBooleanFori=0TorptQuestion2.Items.Count-1c1=rptQuestion2.Items(i).FindControl("checkbox1")c2=rptQuestion2.Items(i).FindControl("checkbox2")c3=rptQuestion2.Items(i).FindControl("checkbox3")c4=rptQuestion2.Items(i).FindControl("checkbox4")bzAn=rptQuestion2.Items(i).FindControl("lbAnswer")Ifc1.Checked=TrueThenanDD=c1.TextIfc2.Checked=TrueThenanDD=anDD+c2.TextIfc3.Checked=TrueThenanDD=anDD+c3.TextIfc4.Checked=TrueThenanDD=anDD+c4.TextanDD=anDD.TrimIfanDD=""ThenanDD="F"Response.Write(anDD)Response.Write(bzAn.Text)arrSTDD=anDD.Split()IfanDD.ToString=bzAn.TextThenfs=4ElseForEachcInarrSTDDIfInStr(bzAn.Text,c)>0Thenfs=2EndIfNextEndIfcj2=cj2+fsResponse.Write(fs)NextResponse.Write("<br/>")Response.Write("你的单选题得分:"&cj&"多选题得分:"&cj2)问题:如果学生作答的是BD却得不到2分.但是对于BC,CD却可以.我知道肯定是我的判分有问题.请问我的代码问题出在哪里?谢谢!很急!!
解决方案
解决方案二:
很想帮忙..可VB看不懂....帮你顶个..
解决方案三:
ifbcdthen4ifbdorcdorbdthen2
解决方案四:
按照要求少选应该可以得一半的分数.如标准答案为BCD,当选择bc,或bd,或cd时都可以得一半.如果选acd,或abd,等等,有错选时是否有分数?
解决方案五:
补充,错选,如acd,abd等不得分,错选的情况比较好写.主要是对于少选情况的判断.
解决方案六:
你这样当然有问题.ForEachcInarrSTDD你应该先割成字符吧,而不是字符串.不知道对不对,VB没用过
解决方案七:
VB,不懂....帮你顶。
解决方案八:
不会用vb.net,vb也好几年没用了,可能有错,楼主自己改下吧.DimResultStandardAsString:ResultStandard="BCD"'//标准答案DimResultCntAsInt'//答对的个数DimCanGradeCntAsInt'//半数标准DimResultErrorAsBool'//是否有错ResultError=falseResultCnt=0IfLen(ResultStandard)%2=0ThenCanGradeCnt=Len(ResultStandard)/2ElseCanGradeCnt=(Len(ResultStandard)+1)/2EndIfIfNotResultErrorANDc1.CheckedThenIfSubStr(ResultStand,c1.Text)>0ThenResultCnt=ResultCnt+1ElseResultError=trueEndIfEndIf'//其它4个类似IfResultCnt=Len(ResultStandard)Then'//给全分ElseIfResultCnt<Len(ResultStandard)ANDResultCnt>=CanGradeCntThen'//给半分Else'//不给分EndIf
解决方案九:
终于发现,原来可能是我犯了一个低级错误,因为bool型的默认是false,而我当给少选给2分时,没有给它true.因此最后还是0分.非常感谢以上各位的帮忙.
解决方案十:
真的是差之毫厘,谬以千里啊.小错误也很烦人啊.