Estoy haciendo ejercicios de java y me he encontrado con uno que no logro resolver,a ver si me podeis echar una mano.
Resulta que tengo varias clases: Circulo,Triangulo,GrupoFiguras y UsoDeGrupoFiguras
Código Java:
Ver original
public class Triangulo{ private double x,y; private double base,altura; if(c instanceof Triangulo){ Triangulo tri=(Triangulo) c; if(this.x==((Triangulo)c).x && this.y==((Triangulo)c).y && this.base==((Triangulo)c).base && this.altura==((Triangulo)c).altura) return true; } return false; } //triangulo.equals(triangulo2) Triangulo(double cx,double cy,double b, double a) {x= cx; y = cy; base = b; altura = a;} {return "Triangulo:\n\t"+"Posicion: ("+x+","+y+")\n\tBase: "+base+"\n\tAltura: "+altura;}}
Código Java:
Ver original
public class Circulo{ private double x,y; private double r; Circulo(double a, double b,double c) {x=a; y=b; r=c;} if(c instanceof Circulo){ Circulo cir=(Circulo) c; if(this.r==((Circulo)c).r && this.x==((Circulo)c).x && this.y==((Circulo)c).y) return true; } return false; } {return "Circulo:\n\t"+ "Posicion: ("+x+","+y+ ")\n\tRadio: "+r+"\n";}}
En este el metodo equals esta mal,lo estoy probando
Código Java:
Ver original
public class GrupoFiguras{ static final int MAX_NUM_FIGURAS = 10; private int numF=0; listaFiguras[numF++]= o; } public void anyadeCirculo(Circulo c) {listaFiguras[numF++]= c;} public void anyadeTriangulo(Triangulo t) {listaFiguras[numF++]= t;} // GrupoFiguras lis=(GrupoFiguras) c; boolean igual=false; for(int i=0;i<this.numF;i++){ for(int j=0;j<((GrupoFiguras)c).numF;j++){ if(this.listaFiguras[i].equals(((GrupoFiguras)c).listaFiguras[j])){igual=true;} else{igual=false;} }} for(int i=0;i<((GrupoFiguras)c).numF;i++){ for(int j=0;j<this.numF;j++){ if(((GrupoFiguras)c).listaFiguras[i].equals(this.listaFiguras[j])){igual=true;} else{igual=false;} }} if(igual==true) return true; return false; } for(int i = 0;i < numF; i++) if (listaFiguras[i] instanceof Circulo) s+="\n"+listaFiguras[i]; s+= "\nTriangulos:"; for(int i = 0;i < numF; i++) if (listaFiguras[i] instanceof Triangulo)s+="\n"+listaFiguras[i]; return s;}}
Código Java:
Ver original
public class UsoDeGrupoFiguras{ GrupoFiguras g = new GrupoFiguras(); g.anyadeCirculo(new Circulo(10,5,3.5)); g.anyadeTriangulo(new Triangulo(10,5,6.5,32)); g.anyadeTriangulo(new Triangulo(10,5,6.5,32)); GrupoFiguras g2 = new GrupoFiguras(); g2.anyadeCirculo(new Circulo(10,5,3.6)); g2.anyadeTriangulo(new Triangulo(10,5,6.5,32)); g2.anyadeTriangulo(new Triangulo(10,5,6.5,32)); Triangulo tri=new Triangulo(10,5,7.5,32); Triangulo tri2=new Triangulo(10,5,6.5,32); //System.out.println(tri.equals(tri2)); Circulo cir=new Circulo(10,5,3.5); Circulo cir2=new Circulo(10,5,3.5); //System.out.println(cir.equals(cir2)); //System.out.println(g); } }
Los equals de los triangulos y circulos me funcionan bien,pero a la hora de comparar los grupos de figuras me falla.
Esto es lo que deberia hacer :
Sobrescribe el metodo equals(Object) para las clases Circulo ,Triangulo y GrupoFiguras . Para ello supondremos que dos figuras son
iguales si contienen exactamente los mismos valores en sus atributos, y
que dos grupos de figuras son iguales si contienen las mismas figuras sin
importar el orden ni la cantidad de veces que aparezcan. Prueba los metodos equals(Object) en UsoDeGrupoFiguras comparando objetos entre si.
Que ocurre si comparas figuras de tipos diferentes? Considera los cambios
que realizarias en los metodos anyadeCirculo, anyadeTriangulo y equals de la clase GrupoFiguras si los grupos de guras fueran conjuntos, es decir, sin elementos repetidos
El problema es que no se como comparar los grupos de figuras ya que como pueden estar en distinto orden compararia un triangulo con un circulo y al reves.
Lo que necesito esque solo compare triangulos con triangulos y circulos con circulos y que sean iguales.
Saludos y gracias