Java 打印字符串数组也打印空值

Java 打印字符串数组也打印空值,java,arrays,string,printing,null,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 Str

当我打印字符串数组的内容时,输出也打印“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]);
        }
我认为问题可能是因为线路:

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

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

null(wa?>=0)

如果打印时
arrStr
中的任何元素为空,它将忠实地打印该元素

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

System.out.println(null + "Bla");
打印
nullBla
。表示为字符串的null为“null”。这里的问题是最初所有字符串[]都由null组成。您需要首先初始化它们。通常

Arrays.fill(arrStr, "");

应该这样做。

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

使用阵列之前,应先初始化阵列:

String[] arrStr = new String[50];
for (int i = 0; i < arrStr.length; i++) {
    arrStr[i] = "";
}
String[]arrStr=新字符串[50];
for(int i=0;i
如果您需要调试代码的帮助,实际代码会有所帮助。您能显示导致错误的代码吗?在数组上完成每次赋值操作后,打印出您已赋值的值。这将使您更好地了解值设置为null的位置。如果您能提供完整的代码,这将很容易r指出问题所在。谢谢,这是我的想法。非常感谢大家花时间回答:)虽然这是一个可以接受的解决方案,但我还是不太愿意总体上推荐。在我看来,设计处理空值可能性的代码比设计期望没有空值并希望达到最佳状态的代码要好。前者最终应该是一个更稳健的解决方案。
String[] arrStr = new String[50];
for (int i = 0; i < arrStr.length; i++) {
    arrStr[i] = "";
}