Array

Eu possuo um array criado com 5 posições todas com null:

private Question[] questionary;

questionary = new Question[nq]; 

Depois tenho a expressão :


while ( questionary.size() != questionary.capacity() ) {
			Question q; 
			q = new AddQuestion();	
			if (AddQuestion.random(0, 1) == 1) q = new TimedQuestion(q);
			questionary.add(q);
		}

Como é que defino os métodos questionary.size() e questionary.capacity() ?

eu tentei assim mas está mal :

	public int size() {
		return questionary.length;
	}

	public int capacity() {
		return nq;
	}

já tentou usar o for para essa iteração que você quer fazer?! Acredito que seria mais fácil!

o problema é que o While é código dado, não posso alterar, tenho mesmo que fazer os métodos, realmente com o for era muito mais simples.

É que os dois métodos que você criou vão retornar o mesmo tamanho. O size não te diz quantos elementos do vetor foram preenchidos, e sim qual é o tamanho dele.

pois… eu precisava de saber quantos é que estão preenchidos, algum método para fazer isso ?

pode ser assim ?

public int size() {
		int size=0;
		for(int i =0; i<questionary.length;++i){
			if(questionary[i]!=null)++size;
		}
return size;
	}

na tua classe Questionary teria que ter um indicador que quando ele fosse adicionar, qual é o último preenchido. Tipo assim

	public static void main(String[] args) {
		Veiculo v = new Veiculo(4);
		int i = 0;
		while(v.currentPosition() < v.size()) {
			
			v.add("" + i++);
		}

	}
	
	public Veiculo(int tam) {
		length = tam;
		texto = new String[tam];
	}
	
	private String[] texto = null;;
	private static int pos = 0;
	private int length = 0;
	
	public int currentPosition() {		
		return pos;
	}
	public void add(String texto) {		
		this.texto[pos++] = texto;
		
	}
	public int size(){
		return this.texto.length;
	}
	
	public int capacity(){
		return this.length;
	}

Até poderia ser dessa maneira que você fez, mas pensa, se você tiver um array com 1000 posições e toda vez que você chamar o teu método ele vai ter que percorrer o array até encontrar um elemento vazio, daí o desempenho vai lá para o cu do cachorro

Realmente você tem razão, obrigado !

Da uma adaptada no código que eu postei acima, acho que é uma maneira elegante de resolver o teu problema. Qualquer coisa posta aí :slight_smile:

java.util.Vector ?