2013-07-19 2 views
0

отрубал мне голову от стены, что, вероятно, простая проблема, которую я просто не совсем понимаю. У меня есть эти три класса, tring для передачи объектов/методов между ними.Конструктор нельзя применять к заданным типам.

Heres первый класс

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 должен оставаться недействительным. Однако он не должен быть статичным или общедоступным.

ответ

0

Вы пытаетесь использовать конструктор, который не объявлен в своем классе «LargeMap»
объявляют конструктор, как это вместо метода goodMethod() в вашем классе «LargeMap»

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); 

Вместо того, чтобы идти на объект creation.ie вместо следующей строки в коде

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

Также класс LargeMap должен оставаться недействительным. Однако он не должен быть статичным или общедоступным. – classA

+0

Что именно означает «класс LargeMap должен оставаться недействительным».? – Prabhaker

0

Класс LargeMap не имеет конструктора, который принимает четыре параметра вообще. В случае отсутствия конструкторов будет только конструктор по умолчанию без аргументов, который добавляется самой Java.

+0

Ok, так что если я добавить конструктор, как: общественные LargeMap (int value1, ThyPoint p1, ThyPoint p2, ThyPoint p3) {// Что мне делать здесь? } – classA

+0

Это должна быть ваша логика приложения. Из вашего кода, я понимаю, у вас нет методов, которые бы потребляли вышеупомянутые параметры. У вас просто есть статический метод утилиты. Если у вашего класса будет такой простой метод, вы можете просто создать объект типа LargeMap lm = new LargeMap(); А для вызова статического метода вообще нет необходимости в объекте. – Karthikeyan

+0

Мои методы будут компилировать параметры, я просто упростил их, извините. Также класс LargeMap должен оставаться недействительным. Однако он не должен быть статичным или общедоступным. – classA

0

Возможно размещение кода для конструктора может помочь ..

попробовать

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

    //do whatever you want 

} 
+0

Также класс LargeMap должен оставаться недействительным. Однако он не должен быть статичным или общедоступным. – classA

Смежные вопросы