Ajuda com código

Galera, alguém pode me dizer pq fica dando erro nessa merda desse código q eu fiz.

[code]import javax.swing.*;
public class Corinthians {
public static void main(String[] args) {
int total = 0, par = 0, impar = 0, maior = 0, aux, inf = 0, juv = 0, adu = 0, menor = 9999;
int[] idades = new int[7];
String[] resp = new String[7];

 for(int i=0; i<8; i++) {
     resp[i] = JOptionPane.showInputDialog("Qual é a idade ?");
     idades[i] = Integer.parseInt(resp[i]);
     if (idades[i] % 2 == 0) {
         par++;
     } else {
         impar++;
     }
     if (idades[i] <= 12) {
         inf++;
     }
     if (idades[i] > 17) {
         adu++;
     } else {
         juv++;
     }
     total = total + idades[i];
     if (idades[i] > maior) {
         maior = idades[i];
     }
     if (idades[i] < menor) {
         menor = idades[i];
     }
   } // end of for
     for (int i=0; i<8; i++) {
   JOptionPane.showMessageDialog(null, "As idades digitadas foram : " + idades[i], "Resposta", 2);
    }
      for (int c=0; c<idades.length; c++) {
     for(int d=idades.length-1; d>c; d--) {
         if (idades[d-c] > idades[d]) {
             aux = idades[d-1];
             idades[d-c] = idades[d];
             idades[d] = aux;
         }
     }
 }
 for (int i=0; i<8; i++) {
 JOptionPane.showMessageDialog(null, "As idades digitadas em ordem crescente foram : " + idades[i], "Resposta", 2);
 }
 for (int a=0; a<idades.length; a++){
     for (int b=idades.length-1; b>a; b--) {
         if (idades[b-a] < idades[b]) {
             aux = idades[b-1];
             idades[b-a] = idades[b];
             idades[b] = aux;
         }
     }
 }
 for (int i=0; i<8; i++) {
 JOptionPane.showMessageDialog(null, "As idades digitadas em ordem decrescente foram : " + idades[i], "Resposta", A);
 }
 JOptionPane.showMessageDialog(null, "A menor idade foi: " + menor, "Resposta", 2);
 JOptionPane.showMessageDialog(null, "A maior idade foi: " + maior, "Resposta", 2);
 JOptionPane.showMessageDialog(null, "A média das idades foi: " + total/7, "Resposta", 2);
 JOptionPane.showMessageDialog(null, "Foram digitados " + par + " idades pares", "Resposta", 2);
 JOptionPane.showMessageDialog(null, "Foram digitados " + impar + " idades impares", "Resposta", 2);
 JOptionPane.showMessageDialog(null, "Há " + inf + " crianças", "Resposta", 2);
 JOptionPane.showMessageDialog(null, "Há " + juv + " adolescentes", "Resposta", 2);
 JOptionPane.showMessageDialog(null, "Há " + adu + " adultos", "Resposta", 2);

}
}[/code]

Ademir Franco, diga o erro que dá que tentaremos te ajudar… abraços

Ele pede as idades, nós digitamos e ele da erro depois.
Obs: Não liguem para o nome do projeto e sim da classe.(meu amigo zuando o baraco) :lol:

Se possivel, copia e coloca o erro que ele mostra no console pra facilitar a análise

" int[] idades = new int[7];
String[] resp = new String[7];

for(int i=0; i<8; i++)"

O erro está no for. Seu array tem sete espaços(0,1,2,3,4,5,6) e ele busca por oito(0,1,2,3,4,5,6,7). Coloque i < 7 que funciona.

E na linha 57 também tem um erro:

JOptionPane.showMessageDialog(null, "As idades digitadas em ordem decrescente foram : " + idades[i], "Resposta", A);

onde está “A” deve ser um inteiro, coloca no lugar de A, o tipo de janela que ela é, usando as constantes da classe JOptionPane, no caso uma janela de informação seria: JOptionPane.INFORMATION_MESSAGE

flw

[quote=dm_thiago]" int[] idades = new int[7];
String[] resp = new String[7];

for(int i=0; i<8; i++)"

O erro está no for. Seu array tem sete espaços(0,1,2,3,4,5,6) e ele busca por oito(0,1,2,3,4,5,6,7). Coloque i < 7 que funciona.[/quote]

Já tinha feito isso amigo, e continua o mesmo erro.

o certo é

int[] idades = new int[7]; 
String[] resp = new String[7]; 

for(int i=0; i<7; i++) //é 7e não 8

se vc tem 7 posições o vetor vai de 0 a 6…

Mas tem que fazer em todos os for que mostram <8

Corrigindo o que eu falei e aquele seu A no JOptionPane:

[code]import javax.swing.*;
public class Corinthians {
public static void main(String[] args) {
int total = 0, par = 0, impar = 0, maior = 0, aux, inf = 0, juv = 0, adu = 0, menor = 9999;
int[] idades = new int[7];
String[] resp = new String[7];

	for(int i=0; i<7; i++) {  
		resp[i] = JOptionPane.showInputDialog("Qual é a idade ?");  
		idades[i] = Integer.parseInt(resp[i]);  
		if (idades[i] % 2 == 0) {  
			par++;  
		} else {  
			impar++;  
		}  
		if (idades[i] <= 12) {  
			inf++;  
		}  
		if (idades[i] > 17) {  
			adu++;  
		} else {  
			juv++;  
		}  
		total = total + idades[i];  
		if (idades[i] > maior) {  
			maior = idades[i];  
		}  
		if (idades[i] < menor) {  
			menor = idades[i];  
		}  
	} // end of for  
	for (int i=0; i<7; i++) {  
		JOptionPane.showMessageDialog(null, "As idades digitadas foram : " + idades[i], "Resposta", 2);  
	}  
	for (int c=0; c<idades.length; c++) {  
		for(int d=idades.length-1; d>c; d--) {  
			if (idades[d-c] > idades[d]) {  
				aux = idades[d-1];  
				idades[d-c] = idades[d];  
				idades[d] = aux;  
			}  
		}  
	}  
	for (int i=0; i<7; i++) {  
		JOptionPane.showMessageDialog(null, "As idades digitadas em ordem crescente foram : " + idades[i], "Resposta", 2);  
	}  
	for (int a=0; a<idades.length; a++){  
		for (int b=idades.length-1; b>a; b--) {  
			if (idades[b-a] < idades[b]) {  
				aux = idades[b-1];  
				idades[b-a] = idades[b];  
				idades[b] = aux;  
			}  
		}  
	}  
	for (int i=0; i<7; i++) {  
		JOptionPane.showMessageDialog(null, "As idades digitadas em ordem decrescente foram : " + idades[i], "Resposta", JOptionPane.PLAIN_MESSAGE);  
	}  
	JOptionPane.showMessageDialog(null, "A menor idade foi: " + menor, "Resposta", 2);  
	JOptionPane.showMessageDialog(null, "A maior idade foi: " + maior, "Resposta", 2);  
	JOptionPane.showMessageDialog(null, "A média das idades foi: " + total/7, "Resposta", 2);  
	JOptionPane.showMessageDialog(null, "Foram digitados " + par + " idades pares", "Resposta", 2);  
	JOptionPane.showMessageDialog(null, "Foram digitados " + impar + " idades impares", "Resposta", 2);  
	JOptionPane.showMessageDialog(null, "Há " + inf + " crianças", "Resposta", 2);  
	JOptionPane.showMessageDialog(null, "Há " + juv + " adolescentes", "Resposta", 2);  
	JOptionPane.showMessageDialog(null, "Há " + adu + " adultos", "Resposta", 2);  
}  

} [/code]

Testa aí e diga se ainda da algum erro, se der, fala qual erro deu.

[quote=dm_thiago]Corrigindo o que eu falei e aquele seu A no JOptionPane:

[code]import javax.swing.*;
public class Corinthians {
public static void main(String[] args) {
int total = 0, par = 0, impar = 0, maior = 0, aux, inf = 0, juv = 0, adu = 0, menor = 9999;
int[] idades = new int[7];
String[] resp = new String[7];

	for(int i=0; i<7; i++) {  
		resp[i] = JOptionPane.showInputDialog("Qual é a idade ?");  
		idades[i] = Integer.parseInt(resp[i]);  
		if (idades[i] % 2 == 0) {  
			par++;  
		} else {  
			impar++;  
		}  
		if (idades[i] <= 12) {  
			inf++;  
		}  
		if (idades[i] > 17) {  
			adu++;  
		} else {  
			juv++;  
		}  
		total = total + idades[i];  
		if (idades[i] > maior) {  
			maior = idades[i];  
		}  
		if (idades[i] < menor) {  
			menor = idades[i];  
		}  
	} // end of for  
	for (int i=0; i<7; i++) {  
		JOptionPane.showMessageDialog(null, "As idades digitadas foram : " + idades[i], "Resposta", 2);  
	}  
	for (int c=0; c<idades.length; c++) {  
		for(int d=idades.length-1; d>c; d--) {  
			if (idades[d-c] > idades[d]) {  
				aux = idades[d-1];  
				idades[d-c] = idades[d];  
				idades[d] = aux;  
			}  
		}  
	}  
	for (int i=0; i<7; i++) {  
		JOptionPane.showMessageDialog(null, "As idades digitadas em ordem crescente foram : " + idades[i], "Resposta", 2);  
	}  
	for (int a=0; a<idades.length; a++){  
		for (int b=idades.length-1; b>a; b--) {  
			if (idades[b-a] < idades[b]) {  
				aux = idades[b-1];  
				idades[b-a] = idades[b];  
				idades[b] = aux;  
			}  
		}  
	}  
	for (int i=0; i<7; i++) {  
		JOptionPane.showMessageDialog(null, "As idades digitadas em ordem decrescente foram : " + idades[i], "Resposta", JOptionPane.PLAIN_MESSAGE);  
	}  
	JOptionPane.showMessageDialog(null, "A menor idade foi: " + menor, "Resposta", 2);  
	JOptionPane.showMessageDialog(null, "A maior idade foi: " + maior, "Resposta", 2);  
	JOptionPane.showMessageDialog(null, "A média das idades foi: " + total/7, "Resposta", 2);  
	JOptionPane.showMessageDialog(null, "Foram digitados " + par + " idades pares", "Resposta", 2);  
	JOptionPane.showMessageDialog(null, "Foram digitados " + impar + " idades impares", "Resposta", 2);  
	JOptionPane.showMessageDialog(null, "Há " + inf + " crianças", "Resposta", 2);  
	JOptionPane.showMessageDialog(null, "Há " + juv + " adolescentes", "Resposta", 2);  
	JOptionPane.showMessageDialog(null, "Há " + adu + " adultos", "Resposta", 2);  
}  

} [/code]

Testa aí e diga se ainda da algum erro, se der, fala qual erro deu.[/quote]

Amigo rodoU, mas pq vc colocou 7 no tamanho dos vetores, sendo q são 7 idades, não seria 6 ? (0,1,2,3,4,5,6 = 7) ?
E pq vc usou JOptionPane.PLAIN_MESSAGE, não poderia usar “2” ?

7 = 7
Mas se tratando de vetores a primeira posição do vetor é sempre 0 sendo assim
um vetor de 7 tem as seguintes posições:
0,1,2,3,4,5,6

Isso mesmo, não poderia declarar os vetores com 6 posições ?

Uma coisa é tamanho do vetor
outra é o indice!

se vc declarou um vetor assim:

String st = new String[3];

os indices vao ser

0, 1 e 2 = totalizando 3 indices.

e o JOptionPane.PLAIN_MESSAGE é uma constante da classe joptionpane que é um inteiro. Uma forma mais facil de dizer que vc quer uma janela sem nada ao invés de ficar decorando que o numero 4 é da janela sem nada e o número 1 eh da janela de erro…

espero que entenda !

flw

Não entendi muito bem sua pergunta agora. Que vetores? Não vi nenhum… (agora que eu percebi que você estava falando array, quando eu li vetor pensei em um Vector :oops: )
Sim, são sete idades, isso foi você que tinha especificado.
Poderia ser 2, eu botei PLAIN_MESSAGE porque no lugar desse PLAIN_MESSAGE tinha um A, e não 2. E eu nem tinha reparado que você tinha usado 2 antes :stuck_out_tongue:

O que acontecia era isso:
Você criou um array em que você podia colocar 7 valores. Mas os seus for tentava acessar um 8º valor, e isso gerava um erro (ArrayIndexOutOfBounds). A única coisa que eu fiz foi fazer o seu for só acessar 7 valores ao invés de 8.

Certo galerinha do “mal”, muito obrigado :smiley:

[quote=dm_thiago]Não entendi muito bem sua pergunta agora. Que vetores? Não vi nenhum… (agora que eu percebi que você estava falando array, quando eu li vetor pensei em um Vector :oops: )
Sim, são sete idades, isso foi você que tinha especificado.
Poderia ser 2, eu botei PLAIN_MESSAGE porque no lugar desse PLAIN_MESSAGE tinha um A, e não 2. E eu nem tinha reparado que você tinha usado 2 antes :stuck_out_tongue:

O que acontecia era isso:
Você criou um array em que você podia colocar 7 valores. Mas os seus for tentava acessar um 8º valor, e isso gerava um erro (ArrayIndexOutOfBounds). A única coisa que eu fiz foi fazer o seu for só acessar 7 valores ao invés de 8.[/quote]

Esquenta não amigo, acontece…
E mesmo assim valeu em.

Você declara um vetor de quantas posições vc quiser, mas lembre-se que o maior indíce sempre será o tamanho do vetor - 1.

Você declara um vetor de quantas posições vc quiser, mas lembre-se que o maior indíce sempre será o tamanho do vetor - 1.[/quote]

Boa.

Galera, alguém poderia me dizer oq tem de errada na ordenação do decrescente, sai tudo errado, o crescente sai certim.

[code]import javax.swing.*;
public class Idades {
public static void main(String[] args) {
int total = 0, par = 0, impar = 0, maior = 0, aux, inf = 0, juv = 0, adu = 0, menor = 9999, z = 0;
int[] idades = new int[7];
String[] resp = new String[7];
int[] inversa = new int[7];

    for(int i=0; i<7; i++) {     
        resp[i] = JOptionPane.showInputDialog("Qual é a idade ?");     
        idades[i] = Integer.parseInt(resp[i]);     
        if (idades[i] % 2 == 0) {     
            par++;     
        } else {     
            impar++;     
        }     
        if (idades[i] <= 12) {     
            inf++;     
        }     
        if (idades[i] >= 13 && idades[i] <=17 ) {     
            juv++;     
        }
        if (idades[i] > 17) {
            adu++;     
        }     
        total = total + idades[i];     
        if (idades[i] > maior) {     
            maior = idades[i];     
        }     
        if (idades[i] < menor) {     
            menor = idades[i];     
        }     
    } // end of for     
    for (int i=0; i<7; i++) {     
        JOptionPane.showMessageDialog(null, "As idades digitadas foram : " + idades[i], "Resposta", 2);     
    }
        for (int c=0; c<idades.length; c++) {     
        for(int d=idades.length-1; d>c; d--) {     
            if (idades[d-c] > idades[d]) {     
                aux = idades[d-1];     
                idades[d-c] = idades[d];     
                idades[d] = aux;     
            }     
        }     
    }     
    JOptionPane.showMessageDialog(null, "As idades digitadas em ordem crescente foram : " + idades[0] + idades[1] + idades[2] + idades[3] + idades[4] + idades[5] + idades[6], "Resposta", 2);          
    for (int a=0; a<idades.length; a++){     
        for (int b=idades.length-1; b>a; b--) {     
            if (idades[b-a] < idades[b]) {     
                aux = idades[b-1];     
                idades[b-a] = idades[b];     
                idades[b] = aux;     
            }     
        }     
    }     
     JOptionPane.showMessageDialog(null, "As idades digitadas em ordem decrescente foram : " + idades[0] + idades[1] + idades[2] + idades[3] + idades[4] + idades[5] + idades[6], "Resposta", 2);
         
    JOptionPane.showMessageDialog(null, "A menor idade foi: " + menor, "Resposta", 2);     
    JOptionPane.showMessageDialog(null, "A maior idade foi: " + maior, "Resposta", 2);     
    JOptionPane.showMessageDialog(null, "A média das idades foi: " + total/7, "Resposta", 2);     
    JOptionPane.showMessageDialog(null, "Foram digitados " + par + " idades pares", "Resposta", 2);     
    JOptionPane.showMessageDialog(null, "Foram digitados " + impar + " idades impares", "Resposta", 2);     
    JOptionPane.showMessageDialog(null, "Há " + inf + " crianças", "Resposta", 2);     
    JOptionPane.showMessageDialog(null, "Há " + juv + " adolescentes", "Resposta", 2);     
    JOptionPane.showMessageDialog(null, "Há " + adu + " adultos", "Resposta", 2);     
}     // end of main

} // end of class [/code]