to com a seguinte duvida, preciso fazer um programa que ordena os numeros e apos retira os numero iguais, consegui fazer a ordenaçao utilizando o metodo bolha, mas agora para retirar os numeros iguais nao esta funcionando, pq se o numero for igual ele deixa um espaço vazio no vetor, alguem pode me dar uma dica ou me ajudar a resolver esse problema?
import javax.swing.JOptionPane;
public class ordenacao{
public static void main (String args[]){
int v[] = new int[10];
int ordena[] = new int[10];
String vetor[] = new String[10];
int aux,j,i;//metodo bolha
int cont=0; //contar quantos numeros estavao repetidos
//escrita de numeros
for (i=0;i<10;i++){
vetor[i] = JOptionPane.showInputDialog("Digite um numero: ");
v[i] = Integer.parseInt(vetor[i]);
}
//ordenaçao
for(i=0;i<9;i++){
for (j=0;j<9;j++){
if (v[j]>v[j+1]){
aux = v[j];
v[j]= v[j+1];
v[j+1] = aux;
} //fim do if
} //fim do for 2
}//fim do for
//inicializar a ordenacao
ordena[0] = v[0];
//retirada de numero iguais
for (i=1;i<10;i++){
if(v[i] == ordena[i-1] ){
cont++;
} //consertar esse metodo, desse jeito ele deixa espaço vazio no vetor
else{
ordena[i]= v[i];
}
}
//mostrar numeros para o usuario
for (i=0;i<10-cont;i++){
JOptionPane.showMessageDialog(null,"\n " +ordena[i]);
}
}//fim do main
}//fim da classe
Seria extremamente mais simples vc colocar seus número em um treeSet, ele já remove os elementos repetidos, e mante os elementos na ‘ordem natural’
[code] TreeSet s = new TreeSet();
for (int i=0;i<10;i++){
Integer input = Integer.valueOf(JOptionPane.showInputDialog("Digite um numero: "));
s.add(input);
}
[quote=cristian_clever]Seria extremamente mais simples vc colocar seus número em um treeSet, ele já remove os elementos repetidos, e mante os elementos na ‘ordem natural’
[code] TreeSet s = new TreeSet();
for (int i=0;i<10;i++){
Integer input = Integer.valueOf(JOptionPane.showInputDialog("Digite um numero: "));
s.add(input);
}
PS … ele pediu metodo bolha atribuindo em outro vetor ,
ou seja basta ele alimentar o vetor ordenação fazendo o seguinte .
Arrays.sort(vetor);
depois ele faria um for verificando se o numero corrente eh igual o numero anterior , se nao for adicionar ao vetor ordenação so isto =) , lembrando utilizei metodos staticos da classe Collections.
olha vlw pelas dicas mas ainda nao estou entendendo direito, sou muito novato nessa area ainda
tipo a ordenaçao eu consigo fazer de boa (metodo bolha)
agora na hora de mostrar para o usuario eu nao consigo retirar os elementos iguais da lista, eu estava querendo usando apenas logica sem nenhum tipode condiçao diferente, eu tentei usando um for mas na hora que aparece um elemento repetido ele preenche o campo com zero, preciso fazer esse campo desaparecer e aparecer apenas os numero ordenados retirando os repetidos.
to com a seguinte duvida, preciso fazer um programa que ordena os numeros e apos retira os numero iguais, consegui fazer a ordenaçao utilizando o metodo bolha, mas agora para retirar os numeros iguais nao esta funcionando, pq se o numero for igual ele deixa um espaço vazio no vetor, alguem pode me dar uma dica ou me ajudar a resolver esse problema?
[/quote]
O problema é que vc está usando arrays. Utilize um Set (como HashSet) para colocar os numeros ( o set não aceita repetidos,portanto
vc ganha um filtro grátis) . Depois copie para um ArrayList e ordene com Collections.sort().
[quote=sergiotaborda][quote=wagner.wtj]Bom dia galera
to com a seguinte duvida, preciso fazer um programa que ordena os numeros e apos retira os numero iguais, consegui fazer a ordenaçao utilizando o metodo bolha, mas agora para retirar os numeros iguais nao esta funcionando, pq se o numero for igual ele deixa um espaço vazio no vetor, alguem pode me dar uma dica ou me ajudar a resolver esse problema?
[/quote]
O problema é que vc está usando arrays. Utilize um Set (como HashSet) para colocar os numeros ( o set não aceita repetidos,portanto
vc ganha um filtro grátis) . Depois copie para um ArrayList e ordene com Collections.sort().
Não utilize arrays, pela sua saude.[/quote]
Como ele esta iniciando , ele vai passar por arrays rsrs , ou seja ele vai apanhar um pouco antes de conseguir usar o de bom da API =) .
Bom estudo .
Bem, pelo que vi é um trabalho escolar, ou algo do tipo.
Se você não puder usar as belezas do JAVA, uma alternativa para seu caso:
1 - Faz um loop com o tamanho do Array,que já está ordenado, ou no momento de ordenar.
2 - Vai copiando elemento a elemento em outro array aux
3 - A cada cópia de elemento do array ordenado para o array aux, você testa se existe esse elemento a ser copiado no aux, percorrendo todo o array aux e comparando os elementos. Caso algum seja igual, não insere no aux, do contrário, insere.
É bem feio fazer isso, pois no java temos estruturas bem mais inteligentes, e que “cuidam” disso pra você, mas caso tenha mesmo que ser feito com arrays, acho q essa é uma solução.
ps: eu poderia postar o código aqui pra você de como ficaria, mas como é um exercício, prefiro deixar pra você pensar um pouquinho.! heheh