java - 使用arrayLists时出现NullPointerException

时间:2018-05-17 09:02:37

标签: java arrays if-statement

我正在JSF 2.2上写一个Eclipse Neon项目。我有两个arraylists;一个是从用户(arrayList1)检查的一组复选框中提取的,另一个是由arrayList2页面内的用户从输入到芯片组件(.xhtml)的关键字中提取的。我需要做的是我必须将这两个arraylists结合起来。

问题是当我将chips留空时,arraylist2返回null,而arraylist1返回空字符串时,我也不会选中此框。所以我认为问题与其他if (lengthlist1 > 0 && arrayList2.size() == 0)部分有关,因为所有其他情况都运作良好。如果选中复选框并将chips组件留空,然后运行代码,则会出现以下错误:

  

引起:java.lang.NullPointerException

同样,所有其他if - else语句都正常工作。

我基本上有4个案例:

    private String wordx;
    private List<String> arrayList1;
    private List<String> arrayList2;

    public void arrayList2List() {

            arrayList2 = new ArrayList<String>();
        }

        public void concatenate() throws IOException {

                int lengthlist1 = arrayList1.size();
                int lengthlist2 = arrayList2.size();

                ArrayList<String> concat = null;

                if (lengthlist2 > 0 && lengthlist1 > 0) {
                    concat = new ArrayList<>(lengthlist1 + lengthlist2);

                    for (int i = 0; i < lengthlist1; i++) {
                        concat.add(arrayList1.get(i) + And + wordx);

                        for (int l = 0; l < lengthlist2; l++) {
                            concat.add(arrayList2.get(l) + And + wordx);
                        }
                    }   
                } else if (lengthlist1 > 0 && arrayList2.size() == 0) { /* I think problem occurs here, when I leave checkboxes list empty */
                    concat = new ArrayList<>(lengthlist1);
                    for (int k = 0; k < lengthlist1; k++) {
                        concat.add(arrayList1.get(k) + And + wordx);
                    }

                } else if (lengthlist1 <= 0 && lengthlist2 > 0) {
                    concat = new ArrayList<>(lengthlist2);
                    for (int m = 0; m < lengthlist2; m++) {
                        concat.add(arrayList2.get(m) + And + wordx);
                    }

                } else {
                    TODO:do something else
                }
                for (int j = 0; j < concat.size(); j++) {
                    Search(concat.get(j));
                }

            }

有人可以解释错误的根本原因吗?我哪里出错了?所有帮助将不胜感激。

0 个答案:

没有答案