不知道为啥我会收到 NullPointerException [重复]

Posted

技术标签:

【中文标题】不知道为啥我会收到 NullPointerException [重复]【英文标题】:Dont know why I am getting a NullPointerException [duplicate]不知道为什么我会收到 NullPointerException [重复] 【发布时间】:2017-04-14 13:15:34 【问题描述】:

我已从数据库将数据输入到数组c_pid[]。现在我正在尝试运行一个循环。如果数组的值不为空,则循环应该继续。一切似乎都运行良好。我得到了想要的输出。但我遇到的一个问题是,由于某种原因,它向我显示了空指针异常。

我已经提供了代码以及下面的屏幕截图。enter image description here

我正在尝试运行这个循环

while(!c_pid[cnt].equals(null))

之后我得到java.lang.NullPointerException 错误

<%@page import="storage.data"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%
    String[] c_pid = new String[100000];
    String c = "", pna = "", pty = "", ppr = "", stock = "", imgpath = "";
    //String myList = new String[10];
    int a = 0, d = 0;
    int result = 0, count = 0;
    int setres;
    int[] arr = new int[100000];
    String testval = "75";
    int item_id = 0;
    data dt = new data();
    String item = "", cartid = "", user = "";
    String[] prdid = new String[60];
    int cnt = 0;

    try 
        dt.st = dt.cn.createStatement();
        String select_match = "SELECT user_prod_id, COUNT(*) AS rep "
                + "FROM cart_table "
                + "GROUP BY user_prod_id "
                + "ORDER BY rep desc";
        dt.rs = dt.st.executeQuery(select_match);

        while (dt.rs.next()) 
            //prdid[a] = dt.rs.getString("user_prod_id");
            //a=a+1;
            c_pid[cnt] = dt.rs.getString("user_prod_id");
            cnt = cnt + 1;
        
        out.println("<br/>---------xxx--------");
        String select3 = "select "
                + "product_table.p_id,product_table.p_type,"
                + "product_type.pt_id,"
                + "product_table.p_name,product_table.imgpath,product_table.p_price,product_table.stock,product_table.add_date,"
                + "product_type.pt_name "
                + "from product_table "
                + "inner join product_type "
                + "on product_table.p_type=product_type.pt_id "
                + "order by product_table.add_date desc"
                + "";
        cnt = 0;
        int size = c_pid.length;
        out.println("Size of array is " + size + "<br />");
        while (!c_pid[cnt].equals(null)) 
            out.println(c_pid[cnt] + "<br />");

            cnt = cnt + 1;
        
     catch (Exception ex) 
        ex.printStackTrace();
        out.println(ex);
           
%>

【问题讨论】:

当你收到空指针异常时,你也会得到发生在哪一行的信息。 你不能像这样比较 null !c_pid[cnt].equals(null)。你应该像 (c_pid[cnt]!=null) 这样比较希望这会有所帮助。 @PorkkoM 谢谢兄弟它成功了!感谢上帝 @Mustafa...干杯兄弟 【参考方案1】:

while (!c_pid[cnt].equals(null)) 这是一个邪恶的地方。将其替换为while(c_pid[cnt]!=null) 应该可以解决问题。

【讨论】:

以上是关于不知道为啥我会收到 NullPointerException [重复]的主要内容,如果未能解决你的问题,请参考以下文章

知道为啥我会收到此错误吗?

为啥我会收到运行时错误?

为啥我会收到这个语法错误(false syntax error pyflakes)

为啥我会收到“错误:序列化从 getStaticProps 返回的 ___ 时出错”?

任何人都知道为啥我会收到“快照侦听器中未捕获的错误:FirebaseError:缺少权限或权限不足”吗?

为啥我会收到“浮点异常(核心转储)”?