Hola amigos, tengo una duda y un problema, en mi clase de ICC, nos dejaron modelar una clase conjunto que realizara la intersección y la unión, la he creado y todo "bien" al parecer, por ejemplo si doy A={1,2,3} y B={1,2,5} me da como unión {1,2}, pero cuando doy A={1,1,1} y B={1,2,4}, me da como unión {1,1,1}, pero no se si este bien o hay algún error, porque solo me debe de dar {1} no?, pero que me puedan ayudar, les anexo mi código clase y un código de prueba de la clase, gracias.
Código clase:
Código Java:
Ver originalimport java.util.*;
/**
* CConjuntos.java
* Esta clase define unos conjuntos y sus opreaciones(union,interseccion)
* @version Septiembre 2013
*/
public class CConjuntos{
//Atributos
private int n,m;
private Scanner teclado;
//Constructor
public CConjuntos(int n, int m){
}
//Metodos
public void cargarA(){
teclado
= new Scanner
(System.
in); for(int i = 0;i < ConjuntoA.length;i++){
System.
out.
print("\nDame un elemento de A: "); ConjuntoA[i] = teclado.next();
}
}
public void cargarB(){
teclado
= new Scanner
(System.
in); for(int j = 0;j < ConjuntoB.length;j++){
System.
out.
print("\nDame un elemnto de B: "); ConjuntoB[j] = teclado.next();
}
}
public void union(){
resultado
= new String[(ConjuntoA.
length + ConjuntoB.
length)]; System.
out.
print("\nLa union del conjunto A y B\n"); for(int i=0; i<(ConjuntoA.length + ConjuntoB.length); i++){
if(i<ConjuntoA.length)
resultado[i] = ConjuntoA[i];
else
resultado[i] = ConjuntoB[(i-ConjuntoA.length)];
}
for(int i=0; i<(ConjuntoA.length + ConjuntoB.length); i++){
for(int j=0; j<(ConjuntoA.length + ConjuntoB.length);j++){
if((resultado[i].equals(resultado[j]))&&(i<j))
resultado[j]="";
}
}
for(int i=0; i<(ConjuntoA.length + ConjuntoB.length); i++){
if(resultado[i]!="")
System.
out.
print(resultado
[i
]+", "); }
}
public void interseccion(){
System.
out.
print("\nLa interseccion del conjunto A y B\n{ "); for(int i = 0;i < ConjuntoA.length;i++){
for(int j = 0;j < ConjuntoB.length;j++){
if(ConjuntoA[i].equals(ConjuntoB[j]))
System.
out.
print(ConjuntoA
[i
] + ", "); }
}
}
}
Código prueba:
Código Java:
Ver originalimport java.util.*;
public class TestConjunto {
public static void main
(String[] args
) { int n,m;
Scanner lector
= new Scanner
(System.
in);
System.
out.
print("Ingrese la cardinalidad del conjunto A: "); n = lector.nextInt();
System.
out.
print("Ingrese la cardinalidad del conjunto B: "); m = lector.nextInt();
CConjuntos conjunto = new CConjuntos();
CConjuntos conjunto2 = new CConjuntos(n,m);
conjunto2.cargarA();
conjunto2.cargarB();
conjunto2.union();
conjunto2.interseccion();
}
}
Espero que me puedan ayudar se los agradeceré mucho.