sessisn
sessisn
2015-06-12 09:07
采纳率: 60%
浏览 1.6k
已采纳

javaWEB这段程序有点小问题,请高手帮忙指正一下.谢谢

下面程序运行输出System.out.println(words);后报错.错误是:[Ljava.lang.String;@11b886b7,请问怎么解决?在线等

package com.db.action;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.db.action.ConnDB;
public class JquerySearch extends HttpServlet{
/**
*
*/
private static final long serialVersionUID = 1L;

protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    response.setContentType("text/html;charset=utf-8");

    response. setCharacterEncoding("UTF-8");

    PrintWriter out = response.getWriter();
    Connection conn = null;
    PreparedStatement pstmt = null;
    ResultSet rs = null;

    try{
        String sql = "select * from info";
        conn = ConnDB.getConn();
        pstmt = conn.prepareStatement(sql);
        rs = pstmt.executeQuery();
        StringBuffer sb=new StringBuffer();

        while(rs.next()){
            String[] www={'"'+rs.getString("Names")+'"'};
            if(www!=null &&www.length>0){
                for(String s:www){
                    sb.append(s+",");
                }
            }
        }
            if(sb.length()>0)
                sb.deleteCharAt(sb.length()-1);
            String []words={sb.toString()};
            if(request.getParameter("SearchText") != null) { 
                String key = request.getParameter("SearchText"); 
                if(key.length() != 0){ 
                String json="["; 
                for(int i = 0; i < words.length; i++) { 
                if(words[i].startsWith(key)){ 
                json += "\""+ words[i] + "\"" + ","; 
                } 
                } 
                json = json.substring(0,json.length()-1>0?json.length()-1:1); 
                json += "]"; 
                System.out.println("json:" + json);
                System.out.println(words);
                out.println(json); 
                } 
                } 



    }catch(Exception e){
        out.println(e);
    }

}

}
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

10条回答 默认 最新

  • francislpx
    SimbaLi123 2015-06-12 09:39
    已采纳

    words是数组,而且只有一个元素,你看一下上面的定义
    你把所有结果放在了一个字符串里,words定义的时候一次性放进去

    for(int i = 0; i < words.length; i++) { 
        if(words[i].startsWith(key)){ 
        json += "\""+ words[i] + "\"" + ","; 
        } 
    
    
    点赞 评论
  • devmiao
    devmiao 2015-06-12 09:18

    ConnDB.getConn()
    怎么写的,数据库打开了么

    点赞 评论
  • sessisn
    sessisn 2015-06-12 09:22

    是的,数据库操作部分没问题,问题应该出在强转字符转换这了,不知道该怎么改。

    点赞 评论
  • francislpx
    SimbaLi123 2015-06-12 09:25

    String []words={sb.toString()};’

    System.out.println(words);

    words是数组啊,怎么直接打印,words[0]

    点赞 评论
  • sessisn
    sessisn 2015-06-12 09:30

    我试试看,还有就是运行后System.out.println("json:" + json);输出为json:[],中间应该有内容才是我想要的结果,例如["123","在在在","人人人"]

    点赞 评论
  • francislpx
    SimbaLi123 2015-06-12 09:43

    你上面www数组定义也有问题,

    while(rs.next()){
            //查出结果后,每循环一次,www就被重新赋值,而不是查出来的结果成为www的元素
                        String[] www={'"'+rs.getString("Names")+'"'};
                if(www!=null &&www.length>0){
                    for(String s:www){
                        sb.append(s+",");
                    }
                }
            }
    
    
    点赞 评论
  • francislpx
    SimbaLi123 2015-06-12 09:46

    if(www!=null &&www.length>0){
    for(String s:www){
    sb.append(s+",");
    }
    }
    上面的判断不对,按照你原来的写法,还需要再加一个条件&& !www[0].trim() .equal("")

    点赞 评论
  • sessisn
    sessisn 2015-06-12 10:07

    敢问“c__username ”帮我改下代码,我是新手,对数组学习的不够深

    点赞 评论
  • xby1993
    小小懒羊羊 2015-06-12 18:14
      System.out.println(words);
    

    哥们,你打印的是数组的内存地址,而不是数组内容、这不是错误,而是你的代码逻辑问题。

    点赞 评论
  • beacon_2011
    beaconD 2015-06-14 04:13

    输出之后报错?报什么错?

    点赞 评论

相关推荐