Olá, estou tentando fazer um código para ordenar o vetor da seguinte maneira:primeiro os números ímpares em ordem crescente, depois os números pares em ordem decrescente - um valor por linha, porém até agora não tive sucesso, poderiam me ajudar, o codigo que estou fazendo segue abaixo:
O que está acontecendo de errado? O que seu método imprime ao final ?
M
Michael_Myers
Então, ele imprime a seguinte sequencia:
-24
-12
1
3
4
5
8
1002
Era para imprimir os numero impares primeiro em forma crescente depois os pares em forma decrescente, e ainda da uma exceção na linha 8.
Rodrigo_Sasaki
if(x[i]%2!=0){
System.out.println(x[i]);
}
if(x[i]%2==0){
System.out.println(x[i]);
}Nesse código você pergunta se o número é impar pra imprimir, se não for, pergunta se é par, logicamente, o número sempre será impresso.
você precisa separar os números, ou criando 2 arrays, adicionando os ímpares em um, os pares em outro,
ou ter algum tipo de controle pra saber se os ímpares ja foram todos impressos, pra poder começar a imprimir os pares.
S
Sem_Nome
Acho que você vai precisar de 2 fors.
M
Michael_Myers
Então galera, mudei a estrutura do código, porém agora so imprime os numero pares.
tente debugar seu código pra ver onde está o problema, porque seu for para imprimir os ímpares parece correto.
ah, você pode usar int i nos 2 fors se quiser, ja que eles não estão encadeados.
M
Michael_Myers
Então tentei novamente, mas sem sucesso, a unica coisa que aparece é a exceção, mas continua imprimindo so os numeros impares(Falei errado no outro post,ehhehe).
F
felipeaps
Qual o tanho de um vetor?
Por exemplo: Quando faço int[] x = new int[5];
O tamanho dele é 5, de 0 a 4 certo? Portanto quando vc faz seu for (int i=0; i <= x.length; x++) vc está percorrendo de 0 a 5 e não de 0 a 4.
Isto gera uma excessão de indexOutOfBounds, ou seja, vc está tentando acessar uma posição que não foi alocada.
Portanto, o certo no for é: for (int i = 0; i < x.length; i++)
Testa aí. E partindo disso vc consegue fazer de forma decrescente tb.
M
Michael_Myers
felipeaps:
Qual o tanho de um vetor?
Por exemplo: Quando faço int[] x = new int[5];
O tamanho dele é 5, de 0 a 4 certo? Portanto quando vc faz seu for (int i=0; i <= x.length; x++) vc está percorrendo de 0 a 5 e não de 0 a 4.
Isto gera uma excessão de indexOutOfBounds, ou seja, vc está tentando acessar uma posição que não foi alocada.
Portanto, o certo no for é: for (int i = 0; i < x.length; i++)
Testa aí. E partindo disso vc consegue fazer de forma decrescente tb.
Então, tentei fazer o seguinte para orderna em forma decrescente, mas sem sucesso, Da a exceção ainda:
Acredito que vc esteja fazendo a ordenação na mão, para questões de aprendizado e lógica…
Se futuramente precisar ordenar algo, utilize o framework Collections do Java, fica muito mais fácil trabalhar com conjuntos de valores e ordenação(sort).
M
Michael_Myers
guilherme.dio:
Acredito que vc esteja fazendo a ordenação na mão, para questões de aprendizado e lógica…
Se futuramente precisar ordenar algo, utilize o framework Collections do Java, fica muito mais fácil trabalhar com conjuntos de valores e ordenação(sort).
Para falar a verdade estou tentando dos dois modos, primeiro quero fazer na mão mesmo, depois fazer usando as collections, to tentando ainda.
mas uma pergunta o collections.sort() não serve so para arrayList?
F
felipeaps
Então, tentei fazer o seguinte para orderna em forma decrescente, mas sem sucesso, Da a exceção ainda:
Cara, vc não prestou atenção no que eu te disse. O que vc precisa fazer?
Se vc tem um vetor de 5 posições, vc precisa ir de 4 a 0 para ordenar de forma decrescente.
Neste seu código vc começa na posição 5 (o que já está errado), pede para parar o loop na posição 1 (i > 0, também está errado) e ainda incrementa o i (i++),
sendo que vc quer ir para trás e não pra frente.
Pensa mais um pouco aí.
guilherme.dio
Michael Myers:
guilherme.dio:
Acredito que vc esteja fazendo a ordenação na mão, para questões de aprendizado e lógica…
Se futuramente precisar ordenar algo, utilize o framework Collections do Java, fica muito mais fácil trabalhar com conjuntos de valores e ordenação(sort).
Para falar a verdade estou tentando dos dois modos, primeiro quero fazer na mão mesmo, depois fazer usando as collections, to tentando ainda.
mas uma pergunta o collections.sort() não serve so para arrayList?
Não.
O método sort() da Collections, funciona para todas as classes que implementam a interface List.
M
Michael_Myers
guilherme.dio:
Michael Myers:
guilherme.dio:
Acredito que vc esteja fazendo a ordenação na mão, para questões de aprendizado e lógica…
Se futuramente precisar ordenar algo, utilize o framework Collections do Java, fica muito mais fácil trabalhar com conjuntos de valores e ordenação(sort).
Para falar a verdade estou tentando dos dois modos, primeiro quero fazer na mão mesmo, depois fazer usando as collections, to tentando ainda.
mas uma pergunta o collections.sort() não serve so para arrayList?
Não.
O método sort() da Collections, funciona para todas as classes que implementam a interface List.
Entendi.
Então galera estou tentando aqui, fazer a ordenação na mão mas está complicado,ehehehe.
Agora so da exceção no codigo:
Então galera tem alguma dica ai?
Estou tentando aqui ainda, e essa foi o unico modo que encontrei para fazer na mão, fazer o “for começar de tras para frente”
faz 2 vetores e organiza eles em ordem, tipo 1 vetor par e um vetor impar, ambos ordenados por ordem crescente, ai ao inves de imprimir um por um vc imprime tudo no final, vetor impar depois vetor par
M
Michael_Myers
entanglement:
for(int i =x.length;i>0;i++ ){
if(x[i]%2==0){
System.out.println(x[i]);
}
}
Para fazer um laço “for” que anda de trás para frente, use:
for (int i = x.length - 1; i >= 0; --i){
if(x[i]%2==0) {
System.out.println(x[i]);
}
}
Então agora consegui, valeu ae velho, valeu mesmo heheh.