Ajuda Array [RESOLVIDO]

8 respostas
Vander_Carlos

Tinha dado uma parada em Java, dai voltei e estou meio perdido.

Está acontecendo o seguinte erro:

Exception in thread “main” java.lang.ArrayIndexOutOfBoundsException: 1
at Pessoa.main(Pessoa.java:19)

import javax.swing.JOptionPane;  
  
public class Pessoa {  
  
    public static void main(String[] args) {  
  
        // 1) Crie um programa que peça o nome, a altura e o peso de duas  
        // pessoas e apresente o nome da mais pesada e o nome da mais alta.  
  
        String[] nomep = new String[1];  
        Double[] altura = new Double[1];  
        Double[] peso = new Double[1];  
          
        int i;  
  
        for (i = 0; i <= 1; i++) {  
  
            nomep[i] = JOptionPane.showInputDialog("Informe o seu nome: ");  
            altura[i] = Double.parseDouble(JOptionPane.showInputDialog("Informe sua altura"));  
            peso[i] = Double.parseDouble(JOptionPane.showInputDialog("Informe o seu peso"));  
        }  
            if (peso[0] > peso[1] ) {  
  
                JOptionPane.showMessageDialog(null, "A pessoa: " + nomep[0] + "é mais pesada");  
  
            }  
            if (altura[0] > altura[1]) {  
  
                JOptionPane.showMessageDialog(null, "A pessoa: " + nomep[0] + "é mais pesada");  
            }  
        }  
    }

O que estou fazendo de errado ou deixando de fazer? D:

[]'s

8 Respostas

rodrigocolasso

Bom dia Vander,

você cria arrays com 1 posição, porém quando vai dar um loop neles, você pega a posição 0 e a 1, lembra que os arrays começam em 0 ?

Corrige isso que vai dar certo.

rodrigocolasso

Você que pode melhorar seu código colocando orientação a objetos neles né ?

Vander_Carlos

Então, eu to pegando as posições 0 e 1.

rodrigocolasso

Sim, mas você declarou com apenas 1 posição

// 1 posição
        String[] nomep = new String[1];   
        Double[] altura = new Double[1];   
        Double[] peso = new Double[1]; 
      
        // 2 posições
        String[] nomep = new String[2];   
        Double[] altura = new Double[2];   
        Double[] peso = new Double[2];
Vander_Carlos

Entendi, mais se for pra fazer dessa forma eu não preciso usar o for.

Eu quero fazer a comparação com o apenas aquele array, com cada posição do array, entendeu ?

[]'s

rodrigocolasso

Sim, eu entendi o que você quer fazer…

mas primeiro você deve criar o array com 2 posições, do jeito que eu te mostrei. dai você pode fazer aquele for para inserir as informações.

Resumindo, as únicas linhas erradas do seu código e a que criam os arrays, que deveriam ter o 2 em vez do 1.

Vander_Carlos

Ai sim xd

Vlw

[]'s

rodrigocolasso

Vander Carlos:
Ai sim xd

Vlw

[]'s

Edita o assunto e coloca como [RESOLVIDO]

Criado 3 de agosto de 2011
Ultima resposta 3 de ago. de 2011
Respostas 8
Participantes 2