2016-05-04 66 views
-3

請在將其標記爲重複之前閱讀該帖子。我總是得到ArrayList的最後一個值

和我不是一個Java專家

這是什麼,我試圖做一個簡單的代碼:

import java.util.ArrayList; 

public class Parameter { 

    private static ArrayList<Integer> quantityArray = new ArrayList<>(); 

    public static void quantityPriorityValues() { 
     int q = 0 ; 
     for (int i = 0; i < 5 ; i++) { 
      quantityArray.add(q); 
      q++; 
     } 
    } 

    public static ArrayList<Integer> getQuantityArray() { 
     return quantityArray; 
    } 

    public void setQuantityArray(ArrayList<Integer> quantityArray) { 
     this.quantityArray = quantityArray; 
    } 
} 

public class Connection { 

    public void getParameters() { 
     i = 0;  
    Parameter.quantityPriorityValues(); 

     while (i < 5) { 

      int quantity = Parameter.getQuantityArray().get(i); 
      System.out.println(quantity); 
      i++; 

     } 
    } 

} 

它總是打印出數組列表的最後一個值。 我檢查了有關這個問題的答案,就像這個one和這個one,他們都說這個問題在static fields.So我試圖從ArrayList<Integer> quantityArray中刪除static,但這意味着getter和setters也應該是non-static而我也將無法呼叫Connection課程中的獲得者。

我想這樣的輸出:0 1 2 3 4

但我得到這樣的輸出:4

沒有人有另一種解決辦法?

+0

能否請你加上預計輸出和你得到的那個? – StepTNT

+3

請包括你的主要方法,所以我們可以看到你初始化列表的位置。 – Eran

+3

事實上 - 理想情況下,將其重寫爲[mcve]。 –

回答

0

在你getParameters()函數 創建一個ArrayList,如:

ArrayList<Integer> quantityArray = Parameters.getQuantityArray(); 

您可以更改像while循環:

for (Integer i : quantityArray) 
    System.out.println(i); 

它應該工作

+0

我會試試,謝謝 – AIR

相關問題