![](/img/trans.png)
[英]Simple ArrayList.remove(int) doesn't work. What I am doing wrong?
[英]Using .add for arraylist doesn't seem to work, what am I doing wrong?
public boolean addPoint(Point p){
points.add(p);
extremes();
return points.add(p);
}
好吧,所以當我運行這段代碼時,主類調用addPoint並傳遞一個Point,但是當它到達“points.add(p);”行時 它給了我一個“java.lang.NullPointerException”錯誤。 僅供參考:“points”是一個arrayList。
另外在旁注,我使用的是“return points.add(p);” 是否返回布爾值? 而在另一方面,我似乎並沒有稱之為“極端();” 是的,因為我得到一個無法訪問的代碼錯誤。
感謝您的幫助! :)
您可能忘記初始化ArrayList(即points
)。 做這樣的事情:
class YourClass {
private final List<Point> points = new ArrayList<Point>();
public boolean addPoint (Point p) {
boolean result = points.add(p);
extremes();
return result;
}
}
你是對的,extremes()永遠不會被調用。 要么重新排序最后兩行,要么訂單很重要,請執行以下操作:
public boolean addPoint(Point p){
boolean result = points.add(p);
extremes();
return result;
}
我還建議您整齊地格式化代碼,以便更容易閱讀,並使用比extremes
更具描述性的名稱。 目前尚不清楚這種方法是否正在尋找極端並返回它們,或者你是否正在調用它以產生一些副作用。 如果它是前者那么很奇怪你實際上並沒有使用返回值 - 也許這是你的代碼中的另一個錯誤。
您得到一個無法訪問的代碼錯誤,因為您對extremes()的調用是在返回之后。 你的方法將永遠返回,永遠不會到達那里。
我想你想要的是什么
public boolean addPoint (Point p) {
boolean didAdd = points.add(p);
extremes();
return didAdd;
}
無需再次調用添加兩次。
你的NullPointerException是因為points為null - 你是否在構造函數中新建了它?
除非你打算兩次堅持列表中的點,否則你不想兩次調用points.add(p)。 你可能想做的是:
public boolean addPoint (Point p) {
boolean result = points.add(p);
extremes();
return result;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.