dúvida de implementação

4 respostas
E

Sou iniciante em Java e estou estudando pelo livro do deitel, java como programar, 6ª edição.
estou com dúvida num exercício, que é esse:


p. 298, 8.15:
crie a classe IntegerSet. Cada objeto IntegerSet pode armazenar inteiros no intervalo de 0 a 100. O conjunto é representado por um array de booleans. O elemento do array a[i] é true se o inteiro i estiver no conjunto. O elemento do array a[j] é false se o inteiro j não estiver no conjunto. O construtor sem argumento inicializa o array java como conjunto vazio (isto é, um conjunto cuja representação de array contém todos os valores false).
Forneça os seguintes métodos: O método union, que cria um terceiro conjunto com a união teórica de dois conjuntos existentes; o método intersection, que cria um terceiro conjunto com a intersecção teórica de dois conjuntos existentes; o método insertElement que insere um novo elemento num conjunto; o método deleteElement que exclui um elemento de um conjunto; o método isEqualTo que determina se dois conjuntos são iguais, e o método toSetString que retorna uma string contendo os elementos do conjunto, ou um - caso a posição daquele elemento seja false.

minhas classes são essas:

public class IntegerSet {

	//variáveis de instância
	//private int elemento[] = new int[101];
	private boolean set[] = new boolean[101];
	
	//contrutor
	public IntegerSet(int a[]) {
		for (int i = 0; i < set.length; i++) {
			for (int j = 0; j < a.length; j++) {
				if (a[j] == i)
					set[i] = true;
			}
		}	
	}
	
	//métodos
//	public void montaSet(int x[]) {
//		for (int id : x)
//			set[id] = true;
//	}
	
	public void union(boolean set1[], boolean set2[]) {
		//boolean setUnion[] = new boolean[101];
		String strUnion = "";
		for (int i = 0; i < set1.length; i++) {
			if (set1[i] || set2[i]) 
				strUnion = strUnion + i + " ";
		}
		System.out.printf("\n\nResultado da união:\n%s", strUnion);
	}
	
	public void intersection(boolean set1[], boolean set2[]) {
		//boolean setIntersection[] = new boolean[101];
		String strIntersection = "";
		for (int i = 0; i < set1.length; i++) {
			if (set1[i] && set2[i]) 
				strIntersection = strIntersection + i + " ";
		}
		System.out.printf("\n\nResultado da intersecção:\n%s", strIntersection);
	}
	
	public void insertElement(int i, boolean set1[]) {
		set1[i] = true;
	}
	
	public void deleteElement(int i, boolean set1[]) {
		set1[i] = false;
	}
	
	public String toSetString(int set1[]) {
		String str = "";
		int colunas = 0;
		for (int i = 0; i < set.length; i++) {
			if (set1[i] == i) {
				str = str + i + " ";
			}
			else {
				str = str + "-- ";
			}
			colunas++;
			if (colunas % 10 == 0)
				str = str + "\n";
		}
		return str;
	}
	
	public boolean isEqualTo(boolean set1[], boolean set2[]) {
		boolean saoIguais = true;
		while (saoIguais) {
			for (int i = 0; i < set1.length; i++) {
				if (set1[i] != set2[i]) 
					saoIguais = false;
			}
		}
		return saoIguais;
	}
}
-------
public class IntegerSetTeste {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

		int array1[] = {0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100};
		int array2[] = {0, 10, 20, 30, 35, 45, 55, 65, 75, 80, 90, 100};
		
		IntegerSet s1 = new IntegerSet(array1);
		IntegerSet s2 = new IntegerSet(array2);
		
//		set_1.montaSet(array1);
//		set_2.montaSet(array2);
		
		System.out.println("Set 1: \n" + s1.toSetString(array1));
		System.out.println("Set 2: \n" + s2.toSetString(array2));
		
		//set_1.isEqualTo();
		
		
	}

}
------ minhas dúvidas são essas: ele pede para criar objetos boolean, e um construtor sem parametros que cria todos os elementos como false, mas não estou sabendo como fazer esse construtor sem parametros e como criar os objetos.... se alguém tiver a fim de estudar esse problema, valeu....

[size="11"][color="red"]* Editado: Lembre-se de utilizar BBCode em seus códigos - marcossousa[/color][/size] :joia:

4 Respostas

L

public IntegerSet() { for (int i = 0; i < set.length; i++) { set[i] = false; } }

:?:

S

O default de um array de boolean já é false.

L
public IntegerSet(){}

Então :!: :wink:

E

Realmente, aquela parte do código é desnecessária (construtor), e eu já tinha feito antes aquele código que o LEOPAS passou.
mas a minha dúvida é que ele quer que tenha um construtor que inicialize o conjunto vazio; como eu vou passar outro conjunto com inteiros para a classe? e mesmo que eu faça um construtor que já insira os inteiros no conjuntos, eu não estou entendendo como eu faço para instanciar o conjunto na classe main e mandar para a outra classe.
valeu a todos.

Criado 16 de maio de 2006
Ultima resposta 17 de mai. de 2006
Respostas 4
Participantes 3