当我打印字符串数组的内容时,输出也会打印'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)
答案 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] = "";
}