以下代码:
import java.util.ArrayList;
import java.awt.Point;
public class Polygon{
ArrayList<Point> points;
//constructs polygon without points
public Polygon() {
points = new ArrayList<Point>();
}
/*
* adds a point to points
*/
public void addPoint(Point){
points.add(Point);
}
public void draw(){
for(int i = 0; i < points.size(); i++){
if(i == 0){
points.get(0).draw()
}else{
points.get(i).draw()
Line line = new Line(points.get(i-1).getX(), points.get(i-1).getY(), points.get(i).getX(), points.get(i).getY());
line.draw();
}
}
if(points.size() >= 2){
Line line = new Line(points.get(-1).getX(), points.get(-1).getY(), points.get(-2).getX(), points.get(-2).getY());
line.draw();
}
}
}
给出了异常消息:
<identifier> expected for public void addPoint(Point)
我只是想不通为什么?通常需要这些标识符来告诉ArrayList它将要保存哪些对象,对吗?
答案 0 :(得分:4)
您缺少标识符。 Point
是一种类型。
public void addPoint(Point p){
points.add(p);
}
答案 1 :(得分:1)
标识符是变量,方法,类,包和接口的名称 与文字不同,它们本身不是事物,只是提及它们的方式。
在HelloWorld程序中,HelloWorld,String,args,main和println是标识符。
这里你错过了命名类型Point
的addPoint方法参数。所以你得到错误
使用此代码
public void addPoint(Point p){
points.add(p);
}
答案 2 :(得分:0)
您定义方法的方式是错误的。您的方法应该有类型(在您的情况下为Point
),后跟一个标识符(例如p
)
public void addPoint(Point p){
points.add(p);
}
检查JLS 8.4,其中说明了
方法或构造函数的形式参数(如果有) 由逗号分隔的参数说明符列表指定。每 参数说明符由类型组成(可选地前缀为 最终修饰符和/或一个或多个注释)和标识符 (可选地后跟括号),指定的名称 的参数强>
答案 3 :(得分:0)
您的“addPoint”方法定义不正确,它没有“Point”的任何标识符。它应该写成:
public void addPoint(Point pnt){
points.add(pnt);
}
答案 4 :(得分:0)
方法声明语法:
public void doSomething(Type variable){
// logic
}
- 在您的情况下,您错过了variable
部分。
正确方法:
public void addPoint(Point point){
points.add(point);
}