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

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

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

程序运行结果:

对于一个多选题,假设有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.除去以上情况,剩下的是对而不全的情况

判断代码如下:

 1 String t3[]=request.getParameterValues("checkbox1");
 2 String a3=Arrays.toString(t3);
 3 
 4 if(t3!=null){
 5 //多选,正确答案ABC
 6 if(t3.length==4 || t3.length==0 ||a3.indexOf("D")!=-1){ //多选或不选或错选
 7 score=score+0;
 8 }
 9 else if(a3.indexOf("C")==3){ //全对
10 score=score+60;
11 }
12 else{
13 score=score+30;
14 }
15 }
16 else{
17 score=score+0;
18 }

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

原文地址:https://www.cnblogs.com/yangyi9343/p/4893487.html