Void方法不能返回值

时间:2017-01-01 15:14:20

标签: java compiler-errors

Java代码最后一行不正确并返回错误 “Void方法无法返回值”

请,任何建议都非常感谢。

    public static void main(String[] args) 
    {   
    Main m = new Main();
    List<JSONObject> jObj = m.getJsonObject();
    StringBuilder sb = new StringBuilder();
    for(int i =0 ; i < jObj.size(); i++)
        {
       sb.append(jObj.get(i).toString());
        }   
            {         
            String responseStr = "{\"data\":[" + sb + "]}";
            System.out.println(responseStr);
            return responseStr;
            }               
    }   
}   

2 个答案:

答案 0 :(得分:0)

这是返回错误的原因是因为当您创建一个具有关键字 void 的方法时,您告诉计算机您的方法不会将任何内容返回到调用该方法的位置。因此,当您返回一个值时,您就会反对您之前所写的内容。

要解决此问题,您需要将方法声明中的单词 void 更改为 string

无论其

因为您编写了一个main方法,所以无法更改声明中的 void ,因为main是计算机在启动时调用的方法,它不能返回值。

答案 1 :(得分:0)

它返回错误,因为您实际上在具有void返回类型的方法(public static void main)中返回值( responseStr )。 void返回类型意味着您不会返回任何内容。

另一方面,你根本就没有使用java servlet。这是您正在创建的普通桌面应用程序。

以下是使用java servlet的Hello World应用程序的示例:

  // Import required java libraries
  import java.io.*;
  import javax.servlet.*;
  import javax.servlet.http.*;

  // Extend HttpServlet class
  public class HelloWorld extends HttpServlet {

  private String message;

  public void init() throws ServletException
  {
      // Do required initialization
      message = "Hello World";
  }

  public void doGet(HttpServletRequest request,
                  HttpServletResponse response)
            throws ServletException, IOException
  {
      // Set response content type
      response.setContentType("text/html");

      // Actual logic goes here.
      PrintWriter out = response.getWriter();
      out.println("<h1>" + message + "</h1>");
  }

  public void destroy()
  {
      // do nothing.
  }
}

此处有关java servlet的更多信息:Java Servlets Tutorial

请记住,您需要在像tomcat或jboss这样的Web应用容器中部署此应用程序。

编辑1

这是一个如何重写代码的示例:

package com.queryData;

//Import required java libraries
import java.io.*;
import java.util.List;
import javax.servlet.*;
import javax.servlet.http.*;
import org.json.JSONObject;
import com.queryData.main.Main;

// Extend HttpServlet class

public class QueryReturn extends HttpServlet {

 private static final long serialVersionUID = 1 L;

 public void init() throws ServletException

 {
  // Do required initialization
 }

 public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException

 {
  Main m = new Main();
  List < JSONObject > jObj = m.getJsonObject();
  StringBuilder sb = new.StringBuilder();

  for (int i = 0; i < jObj.size(); i++) {
   sb.append(jObj.get(i).toString());
  }
  String responseStr = "{\"data\":[" + sb + "]}";
  // Set response content type
  response.setContentType("application/json");

  // Actual logic goes here.
  PrintWriter out = response.getWriter();
  out.println(responseStr);
 }

 public void destroy() {
  // do nothing.
 }
}