Qual o erro?

5 respostas
C

Aparece no compilador arrayIndexOutOfBoundsException, porém eu sei que é estouro de vetor, mas alguém pode me ajudar gostaria de inicializar um vetor de 1000 índices com true, segue abaixo meu código.

//Exercício 27

import java.awt.<em>;

import javax.swing.</em>;

import java.awt.event.*;
public class Ex27 extends JApplet implements ActionListener{

JTextArea output;

boolean array[];
public void init(){
	
			Container janela = getContentPane();
			janela.setLayout( new FlowLayout() );
			
			output = new JTextArea(6,60);
			janela.add(output);
			
			array = new boolean[1000];
	
	}
	
	public void actionPerformed(ActionEvent e){
	
			output.setText(verificar());
	}
	
	public String verificar(){
			
			int c;
			
			for(c = 2; c < array.length;c++){
							
				c = 2 * c;
				array[c] = false;
				c = 3 * c;
				array[c] = false;
			}
			
							
			String  ret = "";
			
			ret += c + " = " + array[c] +"\n";
			
			return ret;
	}

}

5 Respostas

jgbt

não entendi muito bem o que vc quer.
se vc quer inicilizar o array com todos os valores true, é so fazer um for iniciando ocontador em zero e a cada laço colocar true no valor da posição corrente do contador.
é isso???
explica melhor.

[]'s

T

Uai, do jeito que está escrito é para dar ArrayIndexOutOfBounds mesmo.

Dica número 1

  • Nunca, nunca, nunca atribua um valor à variável de controle de um “for”. Isso irá confundir você (e quem for ler seu código) à beça, porque você acha que o loop “for” está contando de um em um (c++) e na verdade você está modificando (c = 2 * c). Faça de conta que a variável contador do “for” é somente de leitura, isso evita muitos problemas.

Dica número 2

  • Não custa fazer uma simulação com valores pequenos. Digamos que em vez de 1000 você tivesse 10 elementos. O que ocorre com o valor de c no loop acima?

Dica número 3

  • Acho que você queria fazer o seguinte (infelizmente meu leitor de pensamentos está meio pifado esses dias…) Você precisa fazer 2 loops em vez de apenas 1 (dá para fazer com apenas 1, mas isso eu lhe deixo como exercício).
for (c = 2; c < array.length; c = c + 2) {
    array[c] = false;
}
for (c = 3; c < array.length; c = c + 3) {
    array[c] = false;
}

Dica número 4

  • E para inicializar um vetor de 1000 elementos com true você pode usar:
import java.util.Arrays;



Arrays.fill (array);

(bom, veja se é isso mesmo, estou fazendo de memória)

C

Não entendi muito bem, isso:
Dica número 4

  • E para inicializar um vetor de 1000 elementos com true você pode usar:
import java.util.Arrays;



Arrays.fill (array);

como eu faria pra inicializar todos com true…

Obrigada!!!

T

Me desculpe, como fiz de cabeça esqueci de passar o parâmetro “true”.

O Javadoc:
fill
public static void fill(boolean[] a,
boolean val)
Assigns the specified boolean value to each element of the specified array of booleans.

Parameters:
a - the array to be filled.
val - the value to be stored in all elements of the array.

Este é um exemplo:

import java.util.Arrays;
class Teste {
    public static void main(String[] args) {
        boolean[] array = new boolean[1000];
        Arrays.fill (array, true);  
    }
}
C

obrigada consegui terminar o exercício

Criado 6 de janeiro de 2005
Ultima resposta 6 de jan. de 2005
Respostas 5
Participantes 3