2013-04-28 34 views
2

我想從列表中檢索值。但我無法從列表中獲取值。我會通過將值傳遞給方法並將其添加到arraylist中來從另一個類調用此方法。現在,當我嘗試檢索該值時,沒有返回任何內容。我無法從列表中檢索數組值

public class No 
{ 
    private double km; 
    private String stringvalue; 

    List<String> k1=new ArrayList(); 
    List<String> k2=new ArrayList(); 

    public void clusterform(int i,String km1,String km2) 
    { 
     int val1=km1.length(); 
     int val2=km2.length(); 
     int centroid=i; 

     if(val1>centroid) 
     { 
      if(val1>val2) 
      { 
       k1.add(km1); 
       k2.add(km2); 

       System.out.println("hi"); 
      } 
      else 
      { 
       k2.add(km1); 
      } 
     } 
     else 
     { 
      k2.add(km1); 
      k1.add(km2); 
     } 

     No n=new No(); 

     n.call(); 
    } 

    public void call() 
    { 
     Iterator getv = k1.iterator(); 
     while(getv.hasNext()) 
     { 
      System.out.println(getv.next()); 
     } 
    } 
} 
+1

你什麼時候給這些數組列表添加數值? – lc2817 2013-04-28 21:08:32

+0

當我調用clusterform方法。 – newuser 2013-04-28 21:10:16

+0

我改變了別人,如果沒有使用 – newuser 2013-04-28 21:13:34

回答

2

原因是這樣的線路:

No n=new No(); 
n.String(); 

這是有創造的No新對象及其ArrayList​​以這樣一種方式,它有大小0初始化。所以n.String()方法不打印任何東西。你應該不是直接調用該方法String()不通過以下方式創建對象:

String() 

正如方面說明我會建議你堅持使用Java命名約定。例如,方法名稱應該以小寫字母開頭。班級名稱應以大寫字母開頭。還有很多。詳細瞭解這個official tutorial以瞭解java命名約定。

+1

不,靜態在這裏什麼都不做。你應該直接調用方法'String()',而不是通過'No'對象調用它 – 2013-04-28 21:18:00

0

​​和k2是類No的實例變量,因此當您調用No n=new No();時,n將成爲具有新(空)列表的類的新實例。可能您想要調用類No的當前實例的方法String而不是創建新實例。