Gustavuu 0 Denunciar post Postado Setembro 11, 2009 Tenho que desenvolver um programinha da seguinte forma: a. Receber 10 valores do tipo inteiro num array. b. Mostrar os índices dos elementos que têm valor par. c. Mostrar os índices dos elementos que têm valor ímpar. d. Mostrar os valores dos elementos de índice par. e. Mostrar os valores dos elementos de índice ímpar. Não entendo muita coisa de java, estou iniciando agora... este programinha é para um exercicio que estou estudando.. Lendo algumas coisas iniciei o programa assim: import java.util.Scanner; public class M547893 { public static void main() { int valores[] = new int[10]; Scanner teclado=new Scanner (System.in); System.out.println ("Digite o 1° valor:"); valores[0]=teclado.nextInt(); System.out.println ("Digite o 2° valor:"); valores[1]=teclado.nextInt(); System.out.println ("Digite o 3° valor:"); valores[2]=teclado.nextInt(); System.out.println ("Digite o 4° valor:"); valores[3]=teclado.nextInt(); System.out.println ("Digite o 5° valor:"); valores[4]=teclado.nextInt(); System.out.println ("Digite o 6° valor:"); valores[5]=teclado.nextInt(); System.out.println ("Digite o 7° valor:"); valores[6]=teclado.nextInt(); System.out.println ("Digite o 8° valor:"); valores[7]=teclado.nextInt(); System.out.println ("Digite o 9° valor:"); valores[8]=teclado.nextInt(); System.out.println ("Digite o 10° valor:"); valores[9]=teclado.nextInt(); } } Até o momento o programa esta recebendo os valores corretamente Só que andei lendo alguns artigos e pelo que entendi esse jeito que fiz não seria o jeito mais correto (?) parece que existe uma maneira de fazer um loop por um FOR para que eu pegue os valores sem que eu fique colocando um comando para cada valor E se alguém tiver alguma dica de como eu fazer as questões b, c, d, e agradeceria muito! Não estou pedindo que resolvam o programa inteiro para mim, só estou pedindo ajuda de como fazer, pois não entendo muito, qualquer ajuda ja sou mto agradecido... A medida que for desenvolvendo o programinha eu vou atualizando aqui para mostrar como esta ficando Obg, Gustavo Compartilhar este post Link para o post Compartilhar em outros sites
Kandrade 7 Denunciar post Postado Setembro 11, 2009 Realmente a melhor maneira de se fazer isso é usando loop. Veja como ficaria: public class M547893 { public static void main() { int valores[] = new int[10]; Scanner teclado=new Scanner (System.in); for(int i=0; i<10; i++){ System.out.println ("Digite o " + (i+1) + " valor:"); valores[i]=teclado.nextInt(); } Teste esse código e veja como tudo entre as chaves do bloco for se repete. Repare também que a cada execução do bloco "i" terá um valor. Ele substituirá os valores: 0, 1, 2, 3, ... Que são exatamente os índices do vetor. Sabendo dessa estrutura voce tem condição de fazer as letras b,c,d,e Vou procurar um material para te explicar melhor a estrutura de loop. Veja um pouco mais sobre estruturas de repetição aqui: http://forum.imasters.com.br/index.php?/topic/342718-estruturas-de-repeticao/ A estrutura acima é equivalente a estrutura "para". Compartilhar este post Link para o post Compartilhar em outros sites
Gustavuu 0 Denunciar post Postado Setembro 11, 2009 Realmente a melhor maneira de se fazer isso é usando loop. Veja como ficaria: public class M547893 { public static void main() { int valores[] = new int[10]; Scanner teclado=new Scanner (System.in); for(int i=0; i<10; i++){ System.out.println ("Digite o " + (i+1) + " valor:"); valores[i]=teclado.nextInt(); } Teste esse código e veja como tudo entre as chaves do bloco for se repete. Repare também que a cada execução do bloco "i" terá um valor. Ele substituirá os valores: 0, 1, 2, 3, ... Que são exatamente os índices do vetor. Sabendo dessa estrutura voce tem condição de fazer as letras b,c,d,e Vou procurar um material para te explicar melhor a estrutura de loop. Veja um pouco mais sobre estruturas de repetição aqui: http://forum.imasters.com.br/index.php?/topic/342718-estruturas-de-repeticao/ A estrutura acima é equivalente a estrutura "para". Cara, mto obrigado, dei uma lida e consegui entender bem melhor, eu já trabalho na area de programação mas ainda sou estagiário Só que aqui no meu serviço trabalho com C# e não com java.. esse exercicio é por causa da faculdade.. mas aos poucos to conseguindo pegar as coisas Consegui resolver o programa aqui com a ajuda de um amigo do serviço e o programa ficou assim: import java.util.Scanner; public class M547893 { public static void main() { int j; int valores[] = new int[10]; int indpar[] = new int[10]; int indimpar[]= new int[10]; Scanner teclado=new Scanner (System.in); j=0; for(int i=0; i<10; i++) { System.out.println ("Digite o " + (i+1) + "° valor:"); valores[i]=teclado.nextInt(); if(valores[i]%2==0) { indpar[j]=i; } else { indimpar[j]=i; } j++; } System.out.println("Indices e valores pares:"); for (int i=0;i<10;i++) { if(indpar[i]!=0) { System.out.println("O indice é:"+indpar[i]+"\n O valor é:"+valores[indpar[i]]); } } System.out.println("Indices e valores impares:"); for (int i=0;i<10;i++) { if(indimpar[i]!=0) { System.out.println("O indice é:"+indimpar[i]+"\n O valor é:"+valores[indimpar[i]]); } } } } Não sei se essa foi a melhor forma de desenvolver o programa, mas pelo menos o resultado final deu certo! Caso tenham alguma modificação para ficar melhor, aceito sugestões T+ Compartilhar este post Link para o post Compartilhar em outros sites
Kandrade 7 Denunciar post Postado Setembro 11, 2009 Voce deu sorte :P Variáveis locais geralmente precisam ser inicializadas, mas não é o caso dos arrays. Os arrays inicializam os elementos com o padrão para o tipo escolhido. Nesse caso os elementos foram inicializados com 0. Voce pode fazer sem a ajuda de vetores que guardam o índice. Veja: public static void main() { int valores[] = new int[10]; Scanner teclado=new Scanner (System.in); // apenas le os valores for(int i=0; i<valores.lenth; i++){ System.out.println ("Digite o " + (i+1) + "° valor:"); valores[i]=teclado.nextInt(); } // indice par System.out.println("Indices e valores pares:"); for (int i=0; i<valores.lenth; i++){ if(i%2 == 0){ System.out.println("O indice é: "+i+"\n O valor é: "+valores[i]); } } // indice ímpar System.out.println("Indices e valores impares:"); for (int i=0; i<valores.lenth; i++){ if(i%2 != 0){ System.out.println("O indice é: "+i+"\n O valor é: "+valores[i]); } } } Compartilhar este post Link para o post Compartilhar em outros sites
Gustavuu 0 Denunciar post Postado Setembro 15, 2009 Cara, peguei esse código e tentei compilar porém ele deu alguns erros, alguns eu consegui resolver, porém outros não estão deixando o programa rodar ainda import java.util.Scanner; public class MyClass { public static void main() { int valores[] = new int[10]; Scanner teclado=new Scanner (System.in); // apenas le os valores for(int i=0; i<valores.lenth; i++){ System.out.println ("Digite o " + (i+1) + "° valor:"); valores[i]=teclado.nextInt(); } // indice par System.out.println("Indices e valores pares:"); for (int i=0; i<valores.lenth; i++){ if(i%2 == 0){ System.out.println("O indice é: "+i+"\n O valor é: "+valores[i]); } } // indice ímpar System.out.println("Indices e valores impares:"); for (int i=0; i<valores.lenth; i++){ if(i%2 != 0){ System.out.println("O indice é: "+i+"\n O valor é: "+valores[i]); } } } } O ERRO QUE APARECE É O SEGUINTE: Line 09, Column 24: No 'length' field in 'int array'. Nessa parte: for(int i=0; i<valores.lenth; i++){ Acho que em valores.lenth tenho que definir algum valor... se souber corrigir agradeceria para ver como o programa ficaria PS:Vi que nessa parte valores.lenth está escrito errado.. mas mesmo corrigindo para valores.length não deu certo! Obg. Compartilhar este post Link para o post Compartilhar em outros sites
Kandrade 7 Denunciar post Postado Setembro 15, 2009 Mals, eu escrevi errado mesmo. import java.util.Scanner; public class ArrayLength { public static void main(String[] args) { int valores[] = new int[10]; Scanner teclado=new Scanner (System.in); // apenas le os valores for(int i=0; i<valores.length; i++){ System.out.println ("Digite o " + (i+1) + "° valor:"); valores[i]=teclado.nextInt(); } // indice par System.out.println("Indices e valores pares:"); for (int i=0; i<valores.length; i++){ if(i%2 == 0){ System.out.println("O indice é: "+i+"\n O valor é: "+valores[i]); } } // indice ímpar System.out.println("Indices e valores impares:"); for (int i=0; i<valores.length; i++){ if(i%2 != 0){ System.out.println("O indice é: "+i+"\n O valor é: "+valores[i]); } } } } Acabei de testar. Os arrays tem uma propriedade chamada length que retorna o tamanho do array. Compartilhar este post Link para o post Compartilhar em outros sites
Milton Quirino 0 Denunciar post Postado Setembro 21, 2009 Grande Kandrade salvando a galera! Compartilhar este post Link para o post Compartilhar em outros sites