打印字符串数组也打印为null

时间:2013-05-27 15:38:09

标签: java arrays string printing null

当我打印字符串数组的内容时,输出也会打印'null'。我不确定这有什么问题。这是输出,我期望的是没有'null'的输出

null(wa?>=0)nullnull*(wo?>=0)nullnull*(4*wa?+7*wo?>=50)nullnull*(d1=10)nullnull*((d2=1)+(k=2))nullnull

感谢并感谢您的帮助。我会在初学者水平上说我的Java技能,并且我在两周后开始。

以下是实际代码:

        String[] arrStr = new String[50];
        int countStr = 0;

        for (int i = 0; i < para.length; i++) {
            if (para[i] == '(') {
                count = count + 1;
            }
            if (para[i] == ')') {
                count = count - 1;
            }
            if (count > 0) {
                arrStr[countStr] = arrStr[countStr] + para[i];
            } else {
                if (para[i] == ')') {
                    arrStr[countStr] = arrStr[countStr] + para[i];
                    countStr += 1;
                } else {
                    countStr += 1;
                    arrStr[countStr] = arrStr[countStr] + para[i];
                    // System.out.println(para[i]);
                }
            }
        }
        System.out.println(countStr);

        for (int i = 0; i < countStr; i++) {
            System.out.print(arrStr[i]);
        }

在此部分之前,我正在从word文档中读取以下字符串:

(wa?>=0)AND(wo?>=0)AND(4*wa?+7*wo?>=50)AND(d1=10)AND((d2=1)+(k=2))

我认为问题可能是由于这一行:

arrStr[countStr] = arrStr[countStr] + para[i]; 

由于arrStr[countStr]最初为null,我向其添加了一个元素,因此将其保存为null+para[i]。你认为有可能吗?

就像我尝试的那样:System.out.println(arrStr[0]);我得到的输出为

null(wa?>=0)

3 个答案:

答案 0 :(得分:3)

System.out.println(null + "Bla");

打印nullBla。表示为String的null为“null”。这里的问题是,最初所有的String []都是由null组成的。您需要先将它们初始化。典型地,

Arrays.fill(arrStr, "");

应该这样做。

答案 1 :(得分:0)

如果arrStr中的任何元素在打印时为空,则会忠实地打印出来。

在不知道代码中的细节的情况下,您可以确保数组中的任何元素都不为null(确保长度匹配,并且您没有跳过arrStr中的元素,或检查null在打印元素之前。

答案 2 :(得分:0)

您没有初始化arrStr数组的值,只是为它分配大小,因此数组的每个元素都为null。为数组的元素赋值时,将其值(空值)与值para[i]连接起来。

您应该在使用之前初始化数组:

String[] arrStr = new String[50];
for (int i = 0; i < arrStr.length; i++) {
    arrStr[i] = "";
}