簡體   English   中英

訪問數組列表的隨機元素會產生相同的結果

[英]Accessing a random element of an arraylist yields the same results

我有一個名為 Keypoints 的類,我想創建一個存儲各種關鍵點對象的數組列表。 這就是我如何貼標和初始化關鍵點列表:

    private static List<Keypoint> m_keyPoints = new ArrayList<Keypoint>(); 

所以在我的代碼中,我有一個 for 循環,它將關鍵點對象添加到列表中:

            for(xi=0;xi<width;xi++)
            {
                for(yi=0;yi<height;yi++)
                {
                    /*Calculation for scale,mag,orien*/

                        // Save this keypoint into the list
                        Keypoint kp =new Keypoint(xi*scale/2, yi*scale/2, mag, orien, i*m_numIntervals+j-1);
                        m_keyPoints.add(kp);
                }
            }

但是現在每當我嘗試訪問列表中的隨機元素時,我總是得到相同的結果。

    for(int ikp = 0;ikp<m_numKeypoints;ikp++)
    {
        Keypoint key =m_keyPoints.get(ikp);
        int scale = key.s();
        float kpxi = key.xi();
        float kpyi = key.yi();
    }

盡管我非常確定每個值都不同,但我為列表中的每個元素獲得了相同的 scale、kpxi 和 kpyi 值。 相反,它返回列表中的最后一個對象。 所以我的問題是,在將對象添加到列表中時我是否做錯了,還是我的關鍵點類有問題? 或者完全是別的東西?

下面是 Keypoint 的類

import java.util.List;
public class Keypoint {
public float            xi;
public float            yi; 
public List<Double> orien ;
public List<Double> mag;
public  int scale;  

public Keypoint(){}

public Keypoint(float x, float y, List<Double> magnitude, List<Double> orientation, int s)
{
    xi = x;
    yi = y;
    mag = magnitude;
    orien = orientation;
    scale = s;
}
public static float xi()
{
    return xi;
}
public static float yi()
{
    return yi;
}
public static int s()
{
    return scale;
}
public  static List<Double> mag()
{
    return mag;
}
public  static List<Double> orien()
{
    return mag;
}

}

您顯示的代碼無法編譯。 但是,這些錯誤暗示了您的實際代碼中出了什么問題。

所有的干將Keypointstatic

public static float xi() { return xi; }
public static float yi() { ... }
public static int s()    { ... }
...

如果相應的數據成員也是static ,這只能編譯,這意味着它們由類的所有實例共享。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM