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á )
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]
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;
}
}
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
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());
}
}
[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
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”