Erro em um código simples

10 respostas
E

Boa noite pessoal favor analisarem este código e me informar qual erro esta acontecendo pois nao esta executando o primeiro laço de repetição FOR.Agradeço a todos e aguardo respostas.

package ericson;

import javax.swing.JOptionPane;

public class desafio {

private static int[] num;

private static int i;

private static int z;

private static int x;

private static int memo;
public static void main (String[] args) {

int x,z,y;
int numarrays[] = new int [8];

for(int i = 1;i <= 8;i++);
num[i] = Integer.parseInt(JOptionPane.showInputDialog(“Digite um numero”));

}
{

for(int z = 1;z <= 8;z++);

int memo;

memo = num[z];

for(int x = 2;z + 1 <= 8;x++);{

if (memo < num[x]);

memo = num[x];

num[x] = num[z];

num[z] = memo;
}

memo = num[z];

}       
{
for(int i = 1;i <= 8;i++);

System.out.println(num[i]);

}

}

}

10 Respostas

ganondorfan

O seu array vai de 0 até 7, ou seja possui 8 posições, você está andando com o índice de 1 até 8, está acessando um índice inválido.

M

erickon2012

Primeiro, favor sempre colocar seu código dentro dos colchetes Code.

for(int i = 1;i &lt;= 8;i++);
num[i] = Integer.parseInt(JOptionPane.showInputDialog(&quot;Digite um numero&quot;));

}

E a Sintaxe utilizada no For esta errada amigo. No Existe este ponte e virgula depois da condição, e sim uma "{".

Então fica assim:

for(int i = 1;i &lt;= 8;i++){
num[i] = Integer.parseInt(JOptionPane.showInputDialog(&quot;Digite um numero&quot;));
}
paulo.furtado

Todos os seus for’s estão incorretos.
O certo é como nosso amigo MarcioMaia descreveu.
Qualquer outra dúvida é só postar.
Vlw

thomazaudio

for(int variável,condição de continuação,incremento ou decremento ){ \\código... }

Está acontecendo um problema com o array int numarrays[] = new int [8];
Você especificou a condição de continuação <=8 quando você declara [8] no array,esse mesmo vai de 0 a 7,o correto seria você colocar <8 (7) ou <=7.
E não se esqueça de abrir e fechar{} nos fors.
Espero ter ajudado!
Abraço!

S

Alem do que ja foi dito, você instanciou o array errado.

int numarrays[] = new int[8];

Esse Array nunca é usado.

Você também encerrou logo após o primeiro for, por isso você não imprimiu nada.

public static void main(String[] args) {
		int x, z, y;
			
		for (int i = 0; i <= 7; i++)
			num[i] = Integer.parseInt(JOptionPane
					.showInputDialog("Digite um numero"));
	}

Todo o resto está sendo ignorado.

E para finalizar você não precisa declarar a variavel de loop como atributo (a não ser que seja necessario). Você pode declara-las assim:

for(int i = 0; i < 10; i++) {
//seu código
}
E

Ola amigos,realizei todas as correções no código e o mesmo ainda não consegue executar o primeiro for o,o que acontece ?Pergunto a vocês onde estão os erros agradeço.

Segue novamente o código corrigido :

import javax.swing.JOptionPane;

public class desafio {

private static int[] num;

private static int i;

private static  int z;

private static int x;

private static int memo;
public static void main (String[] args) {
	     
	   int y = 0; 
	   int numarrays[] = {8}; 
	   i = 0;
	   
	   for(; i <= 7;i++){
	numarrays[i] = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite um número"));
	                       
	    }
	     
	for(int z = 0;z <= 7;z++){ 

	int memo;
	    
	memo = numarrays[z];

	for(int x = 0; z + y <= 7;x++){

	 if (memo < num[x]);
	memo = num[x];
	num[x] = num[z];
	num[z] = memo;
    y = y + 1;
	    }   

	memo = num[z];
	          
	    }       
	           
	 for(int w = 0;w <= 7;i++){  
	 System.out.println(num[w]);  
	    }
	}

}

thomazaudio

Cara,onde a variável num está pegando os valores para as posições do array?

thomazaudio

Olha se seria assim.

import javax.swing.JOptionPane; 

public class desafio { 
private static int[] num; 
private static int i; 
private static int z; 
private static int x; 
private static int memo; 


public static void main (String[] args) { 

int y = 0; 
int numarrays[] = new int[8]; 
 num =new int[8];
i = 0; 

for(; i < 8;i++){ 
numarrays[i] = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite um número")); 
num[i] = numarrays[i];

} 


for(int z = 0;z <= 7;z++){ 

int memo; 

memo = numarrays[z]; 

for(int x = 0; z + y <= 7;x++){ 

if (memo < num[x]); 
memo = num[x]; 
num[x] = num[z]; 
num[z] = memo; 
y = y + 1; 
} 

memo = num[z]; 

} 




 
for(int w = 0;w < 8;w++){ // se nao incrementar w vai ficar com loop infinito aqui
    
            
System.out.println(num[w]); 
} 

} 
}
E

Obrigado a todos muito bom o fórum;

Lucas_Abbatepaolo

se encontrou a solução para o seu problema …por favor coloque o post como [RESOLVIDO]

Criado 1 de janeiro de 2012
Ultima resposta 4 de jan. de 2012
Respostas 10
Participantes 7