【问题标题】:The constructor Polygon(int[], int[], int) is undefined构造函数 Polygon(int[], int[], int) 未定义
【发布时间】:2014-02-06 02:44:58
【问题描述】:

我试图弄清楚为什么这个程序告诉我多边形的构造函数是未定义的。

这是我得到的例外:

     Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
    The constructor Polygon(int[], int[], int) is undefined   
at test.main(test.java:9) 

import java.awt.*;
import java.applet.*;
import java.util.*;
import java.awt.geom.*;
public class Polygon extends Applet {
private int[] xpoints = { 0,-10, -7, 7, 10 };
private int[] ypoints = {-10, -2, 10, 10, -2 };

private Polygon poly;

public void init(){
    poly = new Polygon(xpoints, ypoints, xpoints.length);

}
}

【问题讨论】:

  • 你觉得new Polygon(xpoints, ypoints, xpoints.length); 是怎么回事
  • 您的代码有很多问题。请阅读this tutorial
  • 用两个数组中的点创建一个多边形
  • 这不是完整的代码,我只是复制了开头来弄清楚如何制作多边形。
  • 重命名您的类,或明确引用new java.awt.Polygon,这是您要构建的类。问题是编译器正在 your Polygon 类中寻找构造函数 (int[], int[], int),而不是核心 Java API 中的构造函数。

标签: java constructor polygon


【解决方案1】:

它说你的 Polygon 类必须有一个适合的构造函数

new Polygon(xpoints, ypoints, xpoints.length);

http://docs.oracle.com/javase/tutorial/java/javaOO/constructors.html

【讨论】:

  • 我的印象是多边形已经有一个用于这些参数的构造函数?
  • 嗯,好像还没有;-)
  • @Leo S/he 正在寻找构造 java.awt.Polygon 的实例,它确实有这样的构造函数。
【解决方案2】:

你需要像这样创建一个构造函数:

public Polygon(int[] a, int[] b, int c){
    //construct a new Polygon object with the parameters
}

您现在拥有它的方式只有来自Object 的默认构造函数,即Polygon()

【讨论】:

    【解决方案3】:

    请定义一个构造函数

    Polygon(int[] xp,int[] yp,int xLength){
         xpoints=xp;
         ypoints=yp;
    }
    

    您的代码中很少有问题 -

    1. 您已经在初始化您的成员元素,但仍在尝试使用构造函数再次设置它们。

    2. 要调用 init ,您必须创建一个对象,然后使用 init 创建另一个对象。

    这样编码。

    import java.awt.*;
    import java.applet.*;
    import java.util.*;
    import java.awt.geom.*;
    public class Polygon extends Applet {
        private int[] xpoints;
        private int[] ypoints;
    
        private Polygon poly;
    
        Polygon(int[] xp,int[] yp){
            xpoints=xp;
            ypoints=yp; 
        }
    
        static public void init(int[] xpoints,int[] ypoints){
           poly = new Polygon(xpoints, ypoints);
       }
    }
    

    【讨论】:

      【解决方案4】:

      我认为问题在于您的小程序类已遮蔽了您想要使用的 java.awt.Polygon 类。

      一种可能的解决方法是更改​​您的小程序类的名称:

      import java.awt.*;
      import java.applet.*;
      import java.util.*;
      import java.awt.geom.*;
      
      public class PolygonApplet extends Applet {
          private int[] xpoints = { 0,-10, -7, 7, 10 };
          private int[] ypoints = {-10, -2, 10, 10, -2 };
      
          private Polygon poly;
      
          public void init(){
              poly = new Polygon(xpoints, ypoints, xpoints.length);
          }
      }
      

      【讨论】:

      • 我最初有一个名为 RandomShapes 的类。我并不是想将课程发布为多边形。那是我的错误。但是,即使更改了类名,也会抛出相同的异常。
      • 也许您的输出目录中有一些旧的.class 文件?也许如果你删除所有的.class 文件,然后重新编译你的.java 文件,一切都会奏效。
      • 我想通了... Java.awt.Polygon 必须直接导入.. 感谢您的帮助!
      猜你喜欢
      • 1970-01-01
      • 2023-03-06
      • 2022-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多