2 sessisn sessisn 于 2015.06.12 17:07 提问

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
francislpx   2015.06.12 17:39
已采纳

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

for(int i = 0; i < words.length; i++) { 
    if(words[i].startsWith(key)){ 
    json += "\""+ words[i] + "\"" + ","; 
    } 

devmiao
devmiao   Ds   Rxr 2015.06.12 17:18

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

sessisn
sessisn   2015.06.12 17:22

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

francislpx
francislpx   2015.06.12 17:25

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

System.out.println(words);

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

sessisn
sessisn   2015.06.12 17:30

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

francislpx
francislpx   2015.06.12 17: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
francislpx   2015.06.12 17:46

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

sessisn
sessisn   2015.06.12 18:07

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

xby1993
xby1993   2015.06.13 02:14
  System.out.println(words);

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

beacon_2011
beacon_2011   Rxr 2015.06.14 12:13

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

Csdn user default icon
上传中...
上传图片
插入图片