2013-05-27 176 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