构造函数不能应用于给定类型

时间:2013-07-19 05:14:38

标签: java class object constructor

可能是一个简单的问题,我不太明白,我的头靠在墙上。 我有这三个类,需要在它们之间传递对象/方法。

继承第一堂课

public class LargeMapDriver  
{  
    public static void main(String[] args)  
    {  
    Scanner keyboard = new Scanner(System.in);  
    int value1;  

    ThyPoint p1 = new ThyPoint(132, 734);  
    ThyPoint p2 = new ThyPoint(56, 998);  
    ThyPoint p3 = new ThyPoint(100, 105);  

    System.out.println("Enter value: ");  
    order = keyboard.nextInt();  

    LargeMap myMap = new LargeMap(value1, p1, p2, p3); 

其次,指针类。

public class ThyPoint  
{  
    private int a;  
    private int b;  

    //constructor  
    public ThyPoint(int x, int y)  
    {  
        a = x;  
        b = y;  
    }  

    //...  

    //set and get methods for a and b... not shown

    //...  

    public String toString()  
    {  
        return "a: " + getValueA() + " b: " + getValueA();  
    }  
} 

最后一个类,显示构造函数错误。

public class LargeMap  
{  
    //GETTING CONSTRUCTOR(s) ERROR

    public static void goodMethod(int value1, ThyPoint p1, ThyPoint p2, ThyPoint p3)  
    {  
    if ( value1 == 0 )  
        System.out.println( p1.toString() + p2.toString() + p3.toString());  
    else 
        System.out.println( p2.toString() + p3.toString() + p1.toString());  
     }  
} 

好的,所以问题就出现了:

**constructor LargeMap in class LargeMap cannot be applied to given types;
LargeMap myMap = new LargeMap(value1, p1, p2, p3);
                 ^
required: no arguments
found int,ThyPoint,ThyPoint,ThyPoint
reason: actual and formal arguments differ in length**

所以,我正在尝试为LargeMap类创建一个构造函数,但是失败了,我试图将p1,p2,p3对象中的那些值传递给构造函数来接受。并初始化它们中的值,我该怎么做?我想在其中初始化的值是:

    ThyPoint p1 = new ThyPoint(132, 734);  
    ThyPoint p2 = new ThyPoint(56, 998);  
    ThyPoint p3 = new ThyPoint(100, 105);  

类LargeMap也必须保持无效。但它不一定是静态的或公开的。

3 个答案:

答案 0 :(得分:0)

LargeMap类没有完全接受四个参数的构造函数。在没有构造函数的情况下,只有默认的构造函数没有参数,这由Java本身加起来。

答案 1 :(得分:0)

也许发布构造函数的代码可能会有所帮助..

尝试

public LargeMap (int value1, ThyPoint p1, ThyPoint p2, ThyPoint p3) {

    //do whatever you want

}

答案 2 :(得分:0)

您正在尝试使用未在“LargeMap”类中声明的构造函数 声明像这样的构造函数而不是“LargeMap”类

中的goodMethod()方法
    public LargeMap(int value1, ThyPoint p1, ThyPoint p2, ThyPoint p3)  
    {  
       if ( value1 == 0 )  
         System.out.println( p1.toString() + p2.toString() + p3.toString());  
       else 
         System.out.println( p2.toString() + p3.toString() + p1.toString());  
    } 

在您的情况下,您只能访问java编译器提供的默认构造函数(无参数构造函数) 所以编写自己的构造函数,如上所述 或者你可以直接调用静态方法

    LargeMap.goodMethod(value1, p1, p2, p3); 

而不是代码创建。而不是代码中的下一行

   LargeMap myMap = new LargeMap(value1, p1, p2, p3);