在捕获 url 的内容并将其存储到字符串数组中时出现错误 "cannot find symbol"

getting an error "cannot find symbol" while Capturing the contents of a url and storing it into a string array

我正在学习 java 中的 servlet,我正在尝试捕获 URL 内容并将其存储到字符串数组中。 Bellow 是我按照一些教程放在一起的代码,这些教程似乎不适用于 servlet 环境(这是我尝试做的练习的第一部分)。

我在这一行收到错误:

cookies.add(line);

完整代码如下:

//package fortune;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.ArrayList;
import java.util.Random;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import static java.util.Arrays.*;

@WebServlet(name = "FortuneServlet", urlPatterns = {"/"})
public class FortuneServlet extends HttpServlet {
    private String [] cookies = null;
    //ArrayList<String[]> cookies = new ArrayList<String[]>();

    public void geturl(String[] args) {

        try 
        {
         URL url = new URL(" http://fortunes.cat-v.org/openbsd/");
         // read text returned by server
             BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
         String line = in.readLine();

         while((line = in.readLine()) != null)
         {
              cookies.add(line);
              line = in.readLine();
         }
            in.close();

    }
        catch (java.net.MalformedURLException e) {
            System.out.println("Malformed URL: " + e.getMessage());
        }
        catch (IOException e) {
            System.out.println("I/O Error: " + e.getMessage());
        }
    }
    public void init() throws ServletException {
        // Add your own code here!
        // 1) Open the URL
        // 2) Get the contents
        // 3) Extract the cookie texts to an array


    }

    @Override
    protected void doGet(
        HttpServletRequest request, 
        HttpServletResponse response)
            throws ServletException, IOException {

        response.setCharacterEncoding("UTF-8");
        response.setContentType("text/plain");
        if (cookies != null) {
            response.getWriter().println(
                cookies[new Random().nextInt(cookies.length)]

            );
        } else {
            response.getWriter().println("No luck!");
        }
    }
}
private String [] cookies = null;

此处初始化一个字符串数组并将其设置为空。

cookies.add(line);

这里你假设数组有一个 add() 方法,它没有。

您应该使用带有 add() 方法的 List 注释掉的解决方案。您不应该使用数组列表,而应该使用字符串列表:

List<String> cookies = new ArrayList<>();

然后您可以按照您已经使用的方式添加 cookie:

cookies.add(line);

你不能在数组上使用 add() 方法。你必须使用列表。所以而不是

private String [] cookies = null;

使用

private List<String> cookies = new ArrayList<String>();