thundercas 1 de dez. de 2009
rapid_shark,
Você não pode usar List ou ArrayList???
abs
rapid_shark 1 de dez. de 2009
não, é um trabalho para faculdade.
Preciso usar o compareTo desse array…
já vim em muitos foruns falarem em
Arrays.sort(vetor);
mais nesse não funciona…
marcelux 1 de dez. de 2009
String vetor [] = new String [ 4 ] ;
vetor [ 0 ] = "z" ;
vetor [ 1 ] = "a" ;
vetor [ 2 ] = "g" ;
vetor [ 3 ] = "d" ;
Arrays . sort ( vetor , new Comparator () {
public int compare ( Object o1 , Object o2 ) {
String a = ( String ) o1 ;
String b = ( String ) o2 ;
return a . compareTo ( b );
}
});
for ( int i = 0 ; i < vetor . length ; i ++ ){
System . out . println ( vetor [ i ] );
}
Graciano 1 de dez. de 2009
rapid_shark 1 de dez. de 2009
public static void main ( String [] args ) {
String vetor [] = new String [ 100 ] ;
vetor [ 0 ] = "z" ;
vetor [ 1 ] = "a" ;
vetor [ 2 ] = "g" ;
vetor [ 3 ] = "d" ;
for ( int i = 0 ; i < vetor . length - 1 ; i ++ ) {
for ( int j = 0 ; j <= vetor . length - 1 ; j ++ ) {
if (( vetor [ j ] . compareTo ( vetor [ j + 1 ] ) > 0 )){
String temp = vetor [ i ] ;
vetor [ i ] = vetor [ j ] ;
vetor [ j ] = temp ;
}
}
}
for ( int i = 0 ; i < vetor . length - 1 ; i ++ ) {
System . out . println ( vetor [ i ] );
}
mas agora está a dar erro de NullPointerException em
if (( vetor [ j ] . compareTo ( vetor [ j + 1 ] ) > 0 )) {
...
thundercas 1 de dez. de 2009
tente alterar a linha
for (int j = 0; j <= vetor.length-1; j++) {
para
for (int j = 0; j < vetor.length-1; j++) {
rapid_shark 1 de dez. de 2009
marcelux a sua sugestão funcionou na boa, mas não vou poder aplicar pois ainda não utilizei nada disso na faculdade, mas obrigado na mesma!
rapid_shark 1 de dez. de 2009
continua no mesmo erro… :S
a logica está a mesma que a do site: http://pt.wikipedia.org/wiki/Bubble_sort#Java
mas um pouco modificada para Strings…
daniellfeijo 1 de dez. de 2009
rapid_shark,
Será que isso lhe atende?
public class TestaVetor {
public static void main ( String [] args ) {
String vetor [] = new String [ 4 ] ;
vetor [ 0 ] = "z" ;
vetor [ 1 ] = "a" ;
vetor [ 2 ] = "g" ;
vetor [ 3 ] = "d" ;
for ( int i = 0 ; i < vetor . length - 1 ; i ++ ){
for ( int t = 0 ; t <= vetor . length - 2 ; t ++ ) {
if (( vetor [ t + 1 ] . compareTo ( vetor [ t ] ) < 0 )){
String temp = vetor [ t ] ;
vetor [ t ] = vetor [ t + 1 ] ;
vetor [ t + 1 ] = temp ;
}
}
}
for ( int i = 0 ; i < vetor . length ; i ++ ) {
System . out . println ( vetor [ i ] );
}
}
}
Abraço…
ViniGodoy 1 de dez. de 2009
Veja:
import java.util.Arrays ;
public class Ordenacao {
public static void main ( String [] args ) {
String vetor [] = new String [ 100 ] ;
vetor [ 0 ] = "z" ;
vetor [ 1 ] = "a" ;
vetor [ 2 ] = "g" ;
vetor [ 3 ] = "d" ;
Arrays . sort ( vetor , 0 , 4 );
for ( String s : vetor )
System . out . println ( s );
}
}
Você deve passar os índices que não contém valores nulos, já que eles não podem ser comparados.
Considere também a possibilidade de usar um List no lugar de um vetor.
ViniGodoy 1 de dez. de 2009 1 like
Outra possibilidade é fornecer um comparador que saiba lidar com nulos. Nesse caso, o comparador coloca os nulos atrás:
import java.util.Arrays ;
import java.util.Comparator ;
public class Ordenacao {
public static void main ( String [] args ) {
String vetor [] = new String [ 100 ] ;
vetor [ 0 ] = "z" ;
vetor [ 1 ] = "a" ;
vetor [ 2 ] = "g" ;
vetor [ 3 ] = "d" ;
Arrays . sort ( vetor , new Comparator < String > () {
@Override
public int compare ( String o1 , String o2 ) {
if ( o1 == null && o1 == null )
return 0 ;
if ( o1 == null )
return 1 ; //1
if ( o2 == null )
return - 1 ; //2
return o1 . compareTo ( o2 );
}
});
for ( String s : vetor )
System . out . println ( s );
}
}
Para colocar os nulos na frente, basta trocar o -1 por 1, e vice versa, nos pontos marcados com 1 e 2.
Só não use BubbleSort. É um algoritmo infantil, serve apenas para estudo.