-2

以下代码:

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 它将保存哪些对象,对吗?

4

5 回答 5

4

您缺少标识符。Point是一种类型。

public void addPoint(Point p){
        points.add(p);
    }
于 2013-08-27T11:28:37.717 回答
1

标识符的定义

标识符是变量、方法、类、包和接口的名称。
与文字不同,它们不是事物本身,只是指称它们的方式。

在 HelloWorld 程序中,HelloWorld、String、args、main 和 println 是标识符。

在这里你错过了命名 addPoint 类型的方法参数。Point所以你得到了错误。
使用此代码

 public void addPoint(Point p){
     points.add(p);
  }
于 2013-08-27T11:34:24.933 回答
0

您定义方法的方式是错误的。你的方法应该有类型(在你的情况下Point)后跟一个标识符(比如p

public void addPoint(Point p){
   points.add(p);
}

检查JLS 8.4,其中指出

方法或构造函数的形式参数(如果有)由逗号分隔的参数说明符列表指定。每个参数说明符由一个类型(可选地,前面有 final 修饰符和/或一个或多个注释)和一个指定参数名称的标识符 (可选地后跟括号)组成。

于 2013-08-27T11:35:19.363 回答
0

您的“addPoint”方法定义不正确,它没有任何“Point”标识符。它应该写成:

public void addPoint(Point pnt){
        points.add(pnt);
    }
于 2013-08-27T11:36:27.807 回答
0

方法声明语法:

public void doSomething(Type variable){

     // logic
}

-在您的情况下,您缺少该variable部分。

正确的方式:

 public void addPoint(Point point){

        points.add(point);
 }
于 2013-08-27T11:40:21.243 回答