前台传过来的数据为(横线中间部分)
id   answer
----------------------------
234:A
234:B
234:C
235: A
----------------------------
Enumeration en = request.getParameterNames();
while(en.hasMoreElements())
{
 String name = en.nextElement().toString();
 String values[] = request.getParameterValues(name);
 for(int j=0; j<values.length; j++)
  {
   
  }使用枚举类型接收问题:判断是否重复,重复合并答题项处理后效果如下
-------------------------------
234:A、B、C
235:A
-------------------------------
注:搜索了半天也没找到。是不是枚举类型不能判断重复元素呀
    

解决方案 »

  1.   


    问题:判断是否重复,重复合并答题项没看懂,是取出value与那么对应嘛?
      

  2.   

      枚举里面包含了ID
      判断ID是否重复 如果重复将答案合并
      

  3.   

    Enumeration是老版本的集合遍历的迭代器吧,
    是否判断重复,是和集合有关的。本身不涉及是否重复的约定
      

  4.   

    request.setCharacterEncoding("utf-8");
    Enumeration en = request.getParameterNames();
    Map<String,String> map = new HashMap<String,String>();
    while(en.hasMoreElements()){
    String name = (String)en.nextElement();
    String id = name.substring(0, name.length() - name.replaceFirst("\\d+", "").length());
    System.out.println(id);
    String[] values = request.getParameterValues(name);
    for(String value : values){
    if(map.containsKey(id)){
    map.put(id, map.get(id)+","+value);
    }else{
    map.put(id,value);
    }
    }
    }

    for(Iterator<String> it =  map.keySet().iterator(); it.hasNext();){
    String id = it.next();
    System.out.println(id+":"+map.get(id));
    } <form action="TestServlet">
       <input type="checkbox" name="234A" value="A"> A
       <input type="checkbox" name="234B" value="B"> B
       <input type="checkbox" name="234C" value="C"> C
       <input type="checkbox" name="235A" value="A"> A
       <input type="submit">
      </form>
    这个要你自己处理判断是都重复,Enumeration这玩意怎么知道。
      

  5.   


     Enumeration en= request.getParameterNames();//从前台获取数据 形如 234:A 234:B 235:B
     List<String> type1=new ArrayList<String>();//定义集合作为筛选重复项
     while(en.hasMoreElements())//遍历枚举
     {
       String name = en.nextElement().toString();//获取枚举元素 234 234 235
       String answers="";//定义中间变量
       String values[] = request.getParameterValues(name); //获取枚举对应的值A B B
       for(int j=0; j<values.length; j++){
            type1.add(name); //向集合中添加元素
            if(type1.contains(name))//判断是否重复
              {
                  answers+=values[j]+"、";//重复就将对应的值合并
              }else{
                  type1.add(name);//不重复继续添加
              }
            }
            type1.clear();//循环结束清空集合)  此时获取的值A、B、和B、
            answers=answers.substring(0,answers.length()-1);//此时获取的值A、B和B 
            System.out.println(name+":"+answers); //此时获取的值234:A、B和235:B
        } 
      

  6.   

    思考:
       枚举与集合果然是不同的概念。。   由于前台JS不熟练导致的悲剧。   如果前台直接把它变成 234:A、B 后台直接处理就ok了。   因为系统比较有年代了。。前台看的实在是晕凡是JSP能够出现的符号基本齐了
       
       jsp自己的标签、el表达式、java代码、java注释、js、css、还有自己封装的标签。  
      

  7.   


     Enumeration en= request.getParameterNames();//从前台获取数据 形如 234:A 234:B 235:Bif(type1.contains(name))//判断是否重复234:A 234:B 235:B这3个能相等嘛?需要把id解析出来判断,就想我写的那样,
      

  8.   


    String name = en.nextElement().toString();//获取枚举元素 234 234 235这个name不是//从前台获取数据 形如 234:A 234:B 235:B
    怎么变成//获取枚举元素 234 234 235??
      

  9.   


     一个name  后面是 value
    request.getParameterNames();//取的name的值不包括value值呵呵谢谢你了