2017-10-17 15 views
0

Salut je ne sais pas comment résoudre mon problème à la ligne où est ICI !!! On dit: La méthode add (Figura2D) dans le jeu de type n'est pas applicable pour les arguments (Rettangolo) J'essaie de le faire:La méthode ajouter (Figura2D) dans le type Set <Figura2D> n'est pas applicable pour les arguments (Rettangolo)

package packAppello170919; 
public class Figura2D { 
    private Object obj; 

    public Figura2D(){} 
    public Figura2D(Object figura){ 
     if(figura instanceof Rettangolo){ 
      obj= (Rettangolo)figura; 
     }//I do the same thing with another type of object(Cerchio) 
    }}} 

Figura2D doit contenir Cerchio et Rettangolo, mais je ne savoir comment faire, je peux évidemment modifier à la main, mais je ne peux pas le faire parce que c'est le test des exercices Je mets le un morceau du code ainsi vous pouvez faire testé. Merci

public static Set<Figura2D> generaSetFigure() { 
      Set<Figura2D> F = new HashSet<Figura2D>(); 

      Punto p1 = new Punto(1,1); 
      Punto p2 = new Punto(2,2); 
      Punto p3 = new Punto(3,3); 

      Rettangolo r1 = new Rettangolo(p1,p2); 
      Rettangolo r2 = new Rettangolo(p1,p3); 
      Rettangolo r3 = new Rettangolo(p2,p3); 

      Cerchio c1 = new Cerchio(p1,1.0); 
      Cerchio c2 = new Cerchio(p1,2.0); 
      Cerchio c3 = new Cerchio(p3,1.0); 

      F.add(r1); F.add(r2); F.add(r3); //HERE!!!! 
      F.add(c1); F.add(c2); F.add(c3); 

      return F; 
     } 
+0

Suggestions de lecture: [Java Oracle Tutoriel] (https://docs.oracle.com/javase/tutorial/java/javaOO/index.html) sur les classes. –

+0

la ligne de code où l'erreur se produit pourrait être réécrite de la façon suivante: 'F.add (new Figura2D (r1)); F.add (nouvelle figura2D (r2)); F.add (nouveau Figura2D (r3)); ' –

Répondre

0

Rettangolo n'est pas une instance de Figura2D. Dans la classe Rettangolo, ajoutez extends Figura2D pour utiliser l'héritage.

public class Rettangolo extends Figura2D{} 
+0

Je pense que vous avez raison, je dois étendre Cerchio à Figura2D aussi, non? Parce que Rettangolo et Cerchio doivent être une figura2D. Je vais écrire dès le début le code demain. Merci – Eleazar

+0

Oui, Punto et Cerchio vous devriez faire exactement la même chose. En savoir plus sur l'héritage: https://docs.oracle.com/javase/tutorial/java/IandI/subclasses.html. Une fois que vous le faites, supprimez "private Object obj;" de la classe Figura2D, et le second constructeur (celui avec un argument) puisque vous n'en avez plus besoin. Si cela résout votre problème, veuillez approuver cette réponse. Bonne chance :) –