Servlet 中为多项选择题判分---String类的indexOf()方法妙用

时间:2022-12-03 05:35:19

首先来看一下String类的indexOf()方法的用法

 public class FirstDemo1 {
/**
*API中String的常用方法
*/
// 查找指定字符串是否存在
public static void main(String[] args) {
String str1 = "abcdefghijklmnabc";
// 从头开始查找是否存在指定的字符
System.out.println(str1.indexOf("c"));
// 从第四个字符位置开始往后继续查找
System.out.println(str1.indexOf("c", 3));
//若指定字符串中没有该字符则系统返回-1
System.out.println(str1.indexOf("x"));
}
}

程序运行结果:

Servlet 中为多项选择题判分---String类的indexOf()方法妙用

对于一个多选题,假设有A,B,C,D四个选项,正确答案是  "ABC",

首先,用getParameterValues()方法接收复选框的值,是一个数组:  String t3[]=request.getParameterValues("checkbox1");
然后,用Arrays.toString(String)把这个数组转化成一个字符串:       String a3=Arrays.toString(t3);

接下来就可以做判断了:

1.全选对的话,字符串  "C" 一定在答案字符串的第三位

2.多选或错选的话,字符串  "D" 一定会出现在答案字符串中

3.不选的话,答案字符串为空

4.除去以上情况,剩下的是对而不全的情况

判断代码如下:

 String t3[]=request.getParameterValues("checkbox1");
String a3=Arrays.toString(t3); if(t3!=null){
//多选,正确答案ABC
if(t3.length==4 || t3.length==0 ||a3.indexOf("D")!=-1){ //多选或不选或错选
score=score+0;
}
else if(a3.indexOf("C")==3){ //全对
score=score+60;
}
else{
score=score+30;
}
}
else{
score=score+0;
}

貌似用switch(case)方法也可以实现,不过代码复杂了些。