下面程序运行输出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);
}
}
}
words是数组,而且只有一个元素,你看一下上面的定义
你把所有结果放在了一个字符串里,words定义的时候一次性放进去
for(int i = 0; i < words.length; i++) {
if(words[i].startsWith(key)){
json += "\""+ words[i] + "\"" + ",";
}
ConnDB.getConn()
怎么写的,数据库打开了么
是的,数据库操作部分没问题,问题应该出在强转字符转换这了,不知道该怎么改。
String []words={sb.toString()};’
System.out.println(words);
words是数组啊,怎么直接打印,words[0]
我试试看,还有就是运行后System.out.println("json:" + json);输出为json:[],中间应该有内容才是我想要的结果,例如["123","在在在","人人人"]
你上面www数组定义也有问题,
while(rs.next()){
//查出结果后,每循环一次,www就被重新赋值,而不是查出来的结果成为www的元素
String[] www={'"'+rs.getString("Names")+'"'};
if(www!=null &&www.length>0){
for(String s:www){
sb.append(s+",");
}
}
}
if(www!=null &&www.length>0){
for(String s:www){
sb.append(s+",");
}
}
上面的判断不对,按照你原来的写法,还需要再加一个条件&& !www[0].trim() .equal("")
敢问“c__username ”帮我改下代码,我是新手,对数组学习的不够深
System.out.println(words);
哥们,你打印的是数组的内存地址,而不是数组内容、这不是错误,而是你的代码逻辑问题。
输出之后报错?报什么错?