2013-03-26 84 views
0

從閱讀教程和練習Java,我遇到了一個問題。我創建了一個String ArrayList,並在其中添加了字符串。不過,我想要一個方法,它允許我添加更多的字符串到這個arrayList和另一個允許我顯示這個arrayList的方法。下面是我試圖解決這個問題。我的代碼只打印一個空數組列表如何創建一個返回ArrayList的方法

class apples { 
    public static void main(String[] args) { 
     viewArrayList(); //prints a empty arraylist 
    } 

    public static void addString() { 
     ArrayList<String> destinationArray = new ArrayList<String>(); 
     destinationArray.add("example1"); 
     destinationArray.add("example2"); 
    } 

    static ArrayList GetArrayList() { 
     ArrayList<String> destinationArray = new ArrayList<String>(); 

     return destinationArray; 
    } 

    public static void viewArrayList() { 
     System.out.println(GetArrayList()); 
    } 
} 
+0

既然你正試圖反覆操作相同的列表,您將得到更好的服務在你的類中創建'List '屬性,在你的構造函數中初始化它,然後創建方法來操作它(添加項目,刪除項目,返回列表等)。您還應該刪除您在代碼中散佈的靜態修飾符。 – Perception 2013-03-26 17:34:28

回答

2

創建ArrayList的對象,並通過參考不同的方法。示例在主類中創建一個ArrayList對象,並將其傳遞給addString & display方法。

public static void main(String[] args){ 
    List<String> destinationArray = new ArrayList<String>(); 
    viewArrayList(destinationArray); 
    displayArrayList(destinationArray);//prints a empty arraylist 
} 
public static void addString(List destinationArray){ 
    destinationArray.add("example1"); 
    destinationArray.add("example2"); 
} 
... 
0

我會做這樣的事情:

class apples 
{ 
    private ArrayList<String> array = new ArrayList<String>(); 

    public void addString(String addString) 
    { 
    this.array.add(addString); 
    } 


    public ArrayList<String> GetArrayList() 
    { 
    return array; 
    } 
} 
2

你沒忘了添加addString()來getArrayList()?

2

您的變量destinationArray在方法中聲明,它表明它只存在於此方法內addString()以外的對象不再存在,並且您無法在其他方法中訪問它。要做到這一點,你必須把它聲明爲類變量,這樣的:

class apples{ 
ArrayList<String> destinationArray = new ArrayList<String>(); 
public static void main(String[] args) 

當執行你的程序,其實它執行的主要方法,因此,如果你想執行你的方法addString()你將有在主函數中調用它。它會看起來像這樣:

public static void main(String[] args) 
{ 
    this.addString(); 
    this.viewArrayList(); //prints a empty arraylist 
} 
0

一個問題是,您使用每個方法不同的數組列表。每當您使用關鍵字new時,您正在創建一個新的(和空的)列表。

在你的類的頂部創建ArrayList的一次...

private ArrayList<String> myList = new ArrayList<String>(); 

然後參考myList中的所有其他方法沒有分配給它一個新值。

public ArrayList<String> getArrayList() { 
    return myList; 
} 

public void addSomeStrings() { 
    myList.add("Some String"); 
    myList.add("Some Other String"); 
} 

並且不要害怕走過Java教程。這是一個基本的概念,如果你不支持你的基礎,你可能會感到非常沮喪。

0

編譯並運行下面的程序。

import java.util.ArrayList; 

class Apples { 
    static ArrayList<String> destinationArray = new ArrayList<String>(); 
    public static void main(String[] args) { 
     System.out.print("First time"); 
     viewArrayList(); 
     addString("Example1"); 
     addString("Example2"); 
     addString("Example3"); 

     System.out.print("Second time"); 
     viewArrayList(); 
     addString("Example4"); 
     addString("Example5"); 
     System.out.print("Third time"); 
     viewArrayList(); 
    } 

    public static void addString(String example) { 
     destinationArray.add(example); 
    } 

    static ArrayList getArrayList() { 
     return destinationArray; 
    } 

    public static void viewArrayList() { 
     System.out.println(getArrayList()); 
    } 
} 
0

數組對象的範圍是這裏的問題。您將字符串添加到1數組並嘗試打印另一個數組。刪除addString()中的靜態塊和數組聲明。在這個類定義的旁邊聲明數組,

class apples {ArrayList destinationArray = new ArrayList(); .. ....

它應該工作。

0

代碼:

public class Apples { 
public static void main(String[] args) { 
    viewArrayList(); //prints a empty arraylist 
} 

public static ArrayList<String> addString() { 
    ArrayList<String> destinationArray = new ArrayList<String>(); 
    destinationArray.add("example1"); 
    destinationArray.add("example2"); 
    return destinationArray; 
} 

public static ArrayList<String> GetArrayList() { 
    return addString();  
} 

public static void viewArrayList() { 
    System.out.println(GetArrayList()); 
} 

}

輸出:

[例1,例2]

相關問題