Como proceder com Array agora!;

Galera~, faz um tempo que fiz o cadastro aqui no GUJ e nunca usei mas agora, vai ser de bom grado kkkkkkkkkk

Vamos láh,

tava querendo fazer um programa com uma interface simples, *(mas é para prática), onde o usuário add valores “double” em um array mas problema!

        double altura[] = {1.59, 2.01, 1.74, 1.88, 1.90};

        double novoValor = Double.parseDouble(JOptionPane.showInputDialog("Informe uma Altura abaixo: "));
              

        //adicionando

        int novoValorPosicao = altura.length + 1;
        altura[novoValorPosicao] = novoValor;         //aqui é o problema!

tava querendo basicamente que, o usuário entrasse com um valor e esse valor fosse add no 1° espaço vazio do array,
( eu acho que tem a ver com o array já estar preenchido mas desde já )

Obrigado, :slight_smile:

qual é o erro?

Essa foi rápida heim! Beleza,

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 6
	at caelum.estruturas.de.dados.Calc.main(Calc.java:16)
Java Result: 1

e aponta a linha: (16)

altura[novoValorPosicao] = novoValor;

Opa…

Cara,
Em Java o array tem tamanho fixo.

No seu caso, eu indico a utilização de Collections, tipo ArrayList.

Para facilitar, segue exemplo:

List<Double> list = new ArrayList<Double>();
list.add(1.59);
list.add(2.01);
list.add(1.74);
list.add(1.88);
list.add(1.90);

double novoValor = Double.parseDouble(JOptionPane.showInputDialog("Informe uma Altura abaixo: "));
              
//adicionando
list.add(novoValor);

Se for útil, segue link com mais informações:
http://www.javabuilding.com/academy/java-language/trabalhando-com-arrays-em-java.html

Obrigadoo, testarei agora!

Só Mais uma pergunta, Esse método Collections pode ser usado em aplicações grandes? A perca de velocidade?

Obrigadoo, Até!

Viu Gurii~, tem mais uma,

agora como que eu vou fazer as comparações das maiores e menores alturas? antes seria assim:

[code]

    //valores de Comparação
    double maior = altura[1];
    double menor = altura[0];

    //Cálculo para Comparação
    for (int i = 0; i < altura.length; i++) {
        if (maior < altura[i]) {
            maior = altura[i];
        }
        if (menor > altura[i]) {
            menor = altura[i];
        }
    }[/code]

Segue exemplo

for (int i = 0; i < altura.size(); i++) {
  if (maior < altura.get(i)) {

    }

}

Cara já que tu trabalhando com Collections você pode mandar ordenar o seu ArrayList<?> Collections.sort.

um array é criado com tamanho fixo…

por isso da essa exception, você tenta acessar uma posição que não existe.

você tem que criar o array com uma quantidade boa de posições, não criando e inicializando, outra opção é criar um novo array assim que o anterior estiver cheio, mas isso vai atrapalhar seu aprendizado, crie um array assim:

ex: double altura[100]; // você poderá guardar até 100 posições


agora se você quer fazer usando ArrayList tudo bem…mas saiba que é importante saber Arrays…

double maior = altura.get(1);   
double menor = altura.get(0);      
  
//Cálculo para Comparação   
for (double valor : altura) {   
    if (maior < valor) {   
        maior = valor;
    }   
    if (menor > valor) {   
        menor = valor;   
    }   
}  

Você pode usar o TreeSet. Ele já ordena automaticamente no momento que você insere os dados.
Mas, atenção, um Set não aceita repetição.

Nesse Collections existe algum tipoo de length??,

Obrigado pelas respostas,!!

Se você não sabe o que vou falar agora ignore, por hora, mas procure sobre o assunto.

Em primeiro lugar - Java Collection é uma interface Java. Vários tipos de coleções implementão essa intaface (ex.: filas, pilhas, listas, etc…)
Para mais informações sobre java collection como seus métodos e as classes que implementam essa interface, de umas olhada na API java http://docs.oracle.com/javase/6/docs/api/java/util/Collection.html (API java 6).

O ArrayList como indicaram, por baixo dos panos, continua sendo um array (vetor) só que será tratado como uma lista.
Se você verificar na API lá tem vários métodos como o ‘size()’ por exemplo que ‘Returns the number of elements in this list.’ ou seja é o mesmo que o .length

http://docs.oracle.com/javase/6/docs/api/java/util/ArrayList.html

É sempre bom você dar uma olhada na API. :smiley:
Bons estudos. E qualquer outra duvida pergunta ai. :smiley:

list.size() retorna o tamanho da lista.

public class Lista {
    public static void main(String[] args) {
        List<Double> list = new ArrayList<Double>();  
        list.add(1.59);  
        list.add(2.01);  
        list.add(1.74);  
        list.add(1.88);  
        list.add(1.90);  
        JOptionPane.showMessageDialog(null, list.size());
    }
}

No exemplo de cima ele irá retornar 5.

[quote=douglaskd]um array é criado com tamanho fixo…

por isso da essa exception, você tenta acessar uma posição que não existe.

você tem que criar o array com uma quantidade boa de posições, não criando e inicializando, outra opção é criar um novo array assim que o anterior estiver cheio, mas isso vai atrapalhar seu aprendizado, crie um array assim:

ex: double altura[100]; // você poderá guardar até 100 posições


agora se você quer fazer usando ArrayList tudo bem…mas saiba que é importante saber Arrays…

double maior = altura.get(1);   
double menor = altura.get(0);      
  
//Cálculo para Comparação   
for (double valor : altura) {   
    if (maior < valor) {   
        maior = valor;
    }   
    if (menor > valor) {   
        menor = valor;   
    }   
}  

[/quote]

Embora prefira usar ArrayList, essa é uma alternativa rápida e prática (neste caso). Se for seu caso, faça isso e siga com seus estudos. Deixe o ArrayList pra depois se tiver dificultades em usá-lo

Bom dia Casali,mano só voltado um pouco sobre o seu array!
Cara analise direito o erro que esta sendo gerado no console e vc vera que está tentado inserir um valor(no indice de numero 6)
int novoValorPosicao = altura.length + 1;
altura[novoValorPosicao] = novoValor;
Exception in thread “main” java.lang.ArrayIndexOutOfBoundsException: 6
at caelum.estruturas.de.dados.Calc.main(Calc.java:16)
Java Result: 1

do seu array,mas o seu array não tem esté indice ele tem o indice (até 5) e seu array possui 6 elementos,
double altura[] = {1.59, 2.01, 1.74, 1.88, 1.90}; + o novoValor

e vc deve contar eles com inicio em zero.
0=1.59
1=2.01
2=1.74
3=1.88
4=1.90
Veja a resposta do douglaskd

Obrigadoo a todos!

Por favor, evite no título do seu tópico destacar o óbvio. Todo mundo sabia que você tinha uma dúvida, senão sequer teria aberto o tópico.
Além disso, para que os símbolos “@!”?

Procure ser claro e objetivo em seu título, isso atrai quem pode te ajudar. Procure descrever em linhas gerais o que será encontrado dentro do tópico.
Note a única dica que seu tópico atual dá para quem for responder é que você usa um array. Portanto, se o título fosse só “array”, seria igualmente ruim, mas muito mais sucinto.

Um título muito mais adequado seria:
“Adicionar valor num espaço vazio do array”