Java 使用.add for arraylist不会';好像不行,我做错了什么?
好的,当我运行这段代码时,主类调用addPoint并传递一个点,但是当它到达“points.add(p);”行时,它会给我一个“java.lang.NullPointerException”错误。仅供参考:“points”是一个arrayList 另外,我是否在使用“returnpoints.add(p);”右侧返回布尔值?另一方面,我似乎没有调用“extremes();”对,因为我得到了一个无法访问的代码错误Java 使用.add for arraylist不会';好像不行,我做错了什么?,java,arraylist,Java,Arraylist,好的,当我运行这段代码时,主类调用addPoint并传递一个点,但是当它到达“points.add(p);”行时,它会给我一个“java.lang.NullPointerException”错误。仅供参考:“points”是一个arrayList 另外,我是否在使用“returnpoints.add(p);”右侧返回布尔值?另一方面,我似乎没有调用“extremes();”对,因为我得到了一个无法访问的代码错误 谢谢你的帮助!:) 您是对的,extremes()永远不会被调用。对最后两行重新排序
谢谢你的帮助!:) 您是对的,extremes()永远不会被调用。对最后两行重新排序,或者如果顺序很重要,则执行以下操作:
public boolean addPoint(Point p){
points.add(p);
extremes();
return points.add(p);
}
我还建议您整齐地格式化代码,以便更易于阅读,并使用比例如
extremes
更具描述性的名称。目前还不清楚这种方法是在搜索极端值并返回它们,还是因为某些副作用而调用它。如果是前者,那么您实际上没有使用返回值就很奇怪了——也许这是代码中的另一个错误。您得到了一个无法访问的代码错误,因为对extremes()的调用是在返回之后。您的方法将始终返回,并且永远不会到达那里
我想你想要的是
public boolean addPoint(Point p){
boolean result = points.add(p);
extremes();
return result;
}
无需调用add两次。您可能忘记初始化ArrayList(即
点
)。就这样做吧:
public boolean addPoint (Point p) {
boolean didAdd = points.add(p);
extremes();
return didAdd;
}
classyourclass{
私有最终列表点=新建ArrayList();
公共布尔添加点(点p){
布尔结果=点。添加(p);
极端();
返回结果;
}
}
您的NullPointerException是因为points为null-您在构造函数中新建了它吗
除非你想在列表中重复两次,否则你不想重复两次。您可能想做的是:
class YourClass {
private final List<Point> points = new ArrayList<Point>();
public boolean addPoint (Point p) {
boolean result = points.add(p);
extremes();
return result;
}
}
显示的代码无法编译!什么是
extremes()
?private void extremes(){for(inti=0;i this.right){this.right=p.getX();}如果(p.getY()extremex
code”,我的意思是你的代码不会在编译时出现不可访问代码错误
(line withextremes()
就是不可访问的代码)。如果我只运行返回语句,它还会把我的观点放在数组列表中吗?@adam,我不明白你的问题。如果调用addPoint方法,则该方法中的所有语句都将执行。您不能“仅运行该返回语句”,这里不需要使用对象类型(即布尔而不是布尔)。好的,在开始时,我声明:“private ArrayList points;”够了吗?等等,开玩笑吧,我看到了。谢谢添加了对extremes()
的调用,以使这是一个完整的答案+1不,我没有,我在顶部运行语句“private arrarylist points;”,但是我不知道如何将“new”部分仅放在构造函数中,而不将“private arrarylist points=new arrarylist();”放在顶部。这有意义吗?是的,你能做到。你也可以把私有数组列表点声明中的代码>和'this.points=new ArrayList();'在构造函数中。
public boolean addPoint (Point p) {
boolean result = points.add(p);
extremes();
return result;
}