2013-05-27 90 views
1

当我打印字符串数组的内容时,输出也打印为'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) 
+5

如果您需要帮助调试代码,实际的代码会有所帮助。 –

+0

您能否显示导致错误的代码? – SteWoo

+0

在阵列上完成每个分配操作后,打印出您已分配的值。它会让您更清楚地知道值的设置为空。如果您可以提供整个代码,那么指出问题出在哪里会更容易。 – Adarsh

回答

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

打印nullBla表示字符串是一个空的“空”。这里的问题是,最初所有的String []由空的。你需要先对其进行初始化。通常情况下,

Arrays.fill(arrStr, ""); 

应该做的。

+0

谢谢你就是这么想的。真心感谢你们所有的时间来回答:) – user1596115

0

如果arrStr任何元素为null,而打印时,将打印忠实。

不知道具体在你的代码,你可以确保你的数组中没有元素成为空(确保长度匹配起来,你不是在arrStr跳跃元素,或打印件之前检查null

0

您不初始化arrStr数组的值,您只需为它分配大小,以便数组中的每个元素都为null。将值分配给数组的元素时,将其值(值为空)与值para[i]连接起来。

你应该使用它之前初始化数组:

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

虽然这是一个可接受的解决方案,但我毫不犹豫地推荐这种情况。在我看来,最好是设计处理空值的代码,而不是设计那些期望不存在空值和希望最好的代码。前者应该始终是一个更强大的解决方案。 – scottb