A questão do programa é mostrar que as leis de De Morgan se aplicam a classe Conjunto criada, é meu primeiro tópico aqui então não se muito bem como colocar o código:
public class Conjunto {
private int tam;
private Object vet[];
private int indice;
public Conjunto(int tam){
this.tam = tam;
vet = new Object[this.tam];
indice = 0;
}
public Object getVet(int i){
return vet[i];
}
public int getIndice(){
return indice;
}
public int getTam(){
return tam;
}
public boolean inserir(Object elemento){
if(indice<tam){
vet[indice] = elemento;
indice++;
return true;
}
return false;
}
public boolean pertence(Object elemento){
for(int i = 0;i<indice;i++){
if (elemento == vet[i]){
return true;
}
}
return false;
}
public boolean contem(Conjunto outro){
int tamanho = this.tam;
int cont = 0;
for(int i = 0;i < outro.tam; i++){
for(int j = 0;j <tamanho; j++){
if(outro.vet[i]==vet[j]){
cont++;
j = (tamanho-1);
}
}
}
if(cont == outro.tam){
return true;
}
return false;
}
public Conjunto uniao(Conjunto outro){
Conjunto uniao = new Conjunto(indice + outro.indice);
for(int i = 0;i<indice;i++){
uniao.inserir((int) vet[i]);
}
for(int i = 0;i<outro.indice;i++){
uniao.inserir((int) outro.vet[i]);
}
return uniao;
}
public Conjunto intersecao(Conjunto outro){
int tamanho = this.tam;
Conjunto intersecao = new Conjunto(indice);
for(int i = 0;i < outro.tam; i++){
for(int j = 0;j <tamanho; j++){
if(vet[j] == outro.vet[i]){
intersecao.inserir((int) vet[j]);
}
}
}
return intersecao;
}
public Conjunto diferenca(Conjunto outro){
int tamanho = this.tam;
Conjunto diferenca = new Conjunto(indice);
for(int i = 0;i < tamanho; i++){
int cont = 0;
for(int j = 0;j <outro.tam; j++){
if(vet[i] == outro.vet[j]){
cont++;
}
}
if(cont==0){
diferenca.inserir((int) vet[i]);
}
}
return diferenca;
}
O problema é que no main a ultima linha está dando erro na hora da compilação:
public static void main(String[] args) {
Conjunto Universo = new Conjunto(50);
Conjunto A = new Conjunto(20);
Conjunto B = new Conjunto(20);
for(int i = 1;i < 51;i++){
Universo.inserir(i);
}
for(int i = 1;i < 21;i++){
A.inserir(i);
}
for(int i = 11;i < 31;i++){
B.inserir(i);
}
Conjunto Ac = Universo.diferenca(A);
Conjunto Bc = Universo.diferenca(B);
Conjunto C = Universo.diferenca(A.uniao(B));
Conjunto D = Universo.diferenca(A.intersecao(B));
Conjunto E = Ac.uniao(Bc);
Conjunto F = Ac.intersecao(Bc);
Quando removo a linha do conjunto F, ele compila direitinho, não sei o que está causando o erro
Essa é a mensagem que exibe quando coloco a linha do conjunto F:
Exception in thread “main” java.lang.NullPointerException
at lab_02.Conjunto.intersecao(Conjunto.java:77)
at lab_02.Lab_02.main(Lab_02.java:73)
C:\Users\Eduardo\AppData\Local\NetBeans\Cache\8.1\executor-snippets\run.xml:53: Java returned: 1
FALHA NA CONSTRUÇÃO (tempo total: 0 segundos)