簡體   English   中英

使用.add進行arraylist似乎不起作用,我做錯了什么?

[英]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.

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