2014-01-28 111 views
-1

我正在編寫一個新聞提要程序,我試圖檢查項目是否正確添加到列表數組中。在我的測試工具中,我嘗試在添加組合項後打印數組的內容,但是當我運行該程序時,不顯示任何內容。我的toString方法(或其他方法)有問題嗎?謝謝你的幫助。爲什麼我的toString方法不能在Java中工作?

public class Feed { 

private final int DEFAULT_MAX_ITEMS = 10; // default size of array 

/* Attribute declarations */ 
private String name;  // the name of the feed 
private String[] list;  // the array of items 
private int size;   // the amount of items in the feed 

/** 
* Constructor 
*/ 
public Feed(String name){ 
    list = new String[DEFAULT_MAX_ITEMS]; 
    size = 0; 
} 

/** 
* add method adds an item to the list 
* @param item 
*/ 
public void add(String item){ 
    item = new String(); 

    // add it to the array of items 
      // if array is not big enough, double its capacity automatically 
      if (size == list.length) 
       expandCapacity(); 

    // add reference to item at first free spot in array 
      list[size] = item; 
      size++; 
    } 

/** 
* expandCapacity method is a helper method 
* that creates a new array to store items with twice the capacity 
* of the existing one 
*/ 
private void expandCapacity(){ 
    String[] largerList = new String[list.length * 2]; 
    for (int i = 0; i < list.length; i++) 
     largerList[i] = list[i]; 

    list = largerList; 
} 


/** 
* toString method returns a string representation of all items in the list 
* @return 
*/ 
public String toString(){ 
    String s = ""; 
    for (int i = 0; i < size; i++){ 
     s = s + list[i].toString()+ "\n"; 
    } 
    return s; 
} 

/** 
* test harness 
*/ 

public static void main(String args[]) { 
    Feed testFeed = new Feed("test"); 
    testFeed.add("blah blah blah"); 
    System.out.println(testFeed.toString()); 
} 

}

+4

嗨。要求人們發現代碼中的錯誤並不是特別有效。您應該使用調試器(或者添加打印語句)來分析問題,追蹤程序的進度,並將其與預期發生的情況進行比較。只要兩者發生分歧,那麼你就發現了你的問題。 (然後,如果有必要,你應該構造一個[最小測試用例](http://sscce.org)。) –

+8

'public void add(String item){ item = new String();'你確定你想要做到這一點? –

+1

您正在覆蓋'add'中的'String'值。 –

回答

0

這裏有多種問題。首先,我建議:

1)失去了 「大小」 的成員變量

2)替換爲ArrayList<String> list成員變量 「字符串[]列表」

3)使用list.size()代替一個單獨的「size」變量

4)您也可以丟失(或簡化)「add()」方法。改用list.add()

5)通過調試器。如您所期望的那樣,驗證「列表」會按照您的預期添加。

FINALLY

6)通過調試用於 「的toString()」 步驟。確保「列表」具有您所期望的大小和內容。

'希望可以幫到...

相關問題