Problemas com arrays

4 respostas
S

Olá galera…

Fiz um classe da seguinte forma:

package alinhamentoHorizontal.station_;

/**
 *
 * @author Felipe
 */
public class GuardarFormularioMeio {
    static double[] n = new double[GuardarPi.pi];
    static double[] e = new double[GuardarPi.pi];
    static double[] r = new double[GuardarPi.pi];
    static double[] lci = new double[GuardarPi.pi];
    static double[] lcf = new double[GuardarPi.pi];
    /** Creates a new instance of GuardarFormularioMeio */
    public GuardarFormularioMeio() {
    }
    
    public static void guardarMeio(int i,double n_F,double e_F,double r_F,double lci_F,double lcf_F){
        n[i] = n_F;
        e[i] = e_F;
        r[i] = r_F;
        lci[i] = lci_F;
        lcf[i] = lcf_F;
    }
}

A classe GuardarPi.pi guarda a quantidade que vai no array…
na primeira vez que rodo o programa , da tudo certo…

é eu que preencho o classe GuardarPi.pi com um JOptionPane.showInput…

mas quando rodo a segunda vez, essa parte do programa, com uma quantidade diferente ele da erro…
E pelo que entendi o erro esta por que ele fica com a quantidade anterior e não muda mais…

se estiver confuso eu explico a parte confusa…rs

grato,

Semsar

4 Respostas

L

Vc não tem como alterar a capacidade de um array, tem que criar outro e copiar os dados do antigo. Quando vc ler do seu input o novo tamanho do array, vc tem que recriar (dar todos aqueles new) os seus arrays de novo para que eles tenham o novo tamanho.

S

Obrigado pela ajuda…

Eu queria então saber como declarar um array com dimensões “infinta”, e a parte que naum for alocada nesse array ele descarta…naum sei se isso tbm é possivel…

Grato,

Semsar

L

Vc pode usar Collections do java, é um conjunto de classes para esse tipo de coisa, como sugestão use a interface List com a classe ArrayList.

Da uma lida http://www.javafree.org/javabb/viewtopic.jbb?t=847654 para se aprofundar um pouco mais no assunto.

Mas, dependendo do seu problema, as vezes é realmente necessário eliminar todos elementos do array, lista, etc, e começar a popular de novo pois os valores antigos não valem mais. Usando uma lista, ele pode ficar incluindo infinitamente (até sua memória acabar), então se vc quiser começar do 0 após o usuário informar uma nova quantidade, vai ter que pensar em fazer algo como remover todos elementos da lista ou simplesmente substituir por uma lista nova (que seria a mesma solução do array).

S

Se você quer uma coleção dinamica, então você tem que usar ArrayList ou List.
O Array você sempre vai ter que dimensionar e é aquele espaço que ele reserva.
Já na lista você vai atribuindo cada hora um elemento novo.

Criado 2 de janeiro de 2008
Ultima resposta 3 de jan. de 2008
Respostas 4
Participantes 3