Para “a > b” use “a.compareTo(b) > 0” e para “a == b” use “a.equals (b)”. OK?
WendersonLP
Bem, o problema é que você está fazendo comparação de maior(>) ou menor(<) com Strings, você
terá que conterver esse valores para números inteiros, ou outro tipo de for o caso, e ai sim poderá
fazer essas comparações.
entanglement vou olhar o artigo que o bruno postou para entender esse ‘0’.
pvrsouza
legal seu codigo deu pra entender legal.
soh no final que nao consegui mto bem…
numeros[x]=String.valueOf(auxiliar);
o que isso quer dizer?
porque nao simplesmente
numeros[x]=auxiliar
acredito que seja por causa da conversao de tipo …
poderia me ajudar?
vlw
pvrsouza
rijava,
auxiliar=Integer.parseInt(numeros[x+1]);
auxiliar recebe um valor int. Por isso a conversão de String para Inteiro (Integer.parseInt(numeros[x + 1])).
numeros[x]=String.valueOf(auxiliar);
numeros é um vetor de String. Portanto não dá para colocar um Inteiro dentro de uma variavel do tipo String. POr isto usa-se o String.valueOf().
Sacou? Ou confundi mais? SE não endeter me avisa que eu falo com mais explicadinho.
Abraços.
rijava
pvrsouza
mas tipo, auxiliar eh uma variavel do tipo inteiro.
dai ela tem que receber algo do tipo inteiro … no caso voce convertou o ‘numeros[x+1]’ para int.
dps, numeros[x+1] é um inteiro ou seja, ele soh pode receber inteiros … porque voce nao converteu o numeros[x] para inteiros tb?
ao inves de usar o String.valueOf…
nao sei se vc entendeu minha duvida…
a funcao do String.valueOf é exatamente o que ?
vlw ae cara.
desculpa a amolaçao… to começando agora com java ;
Esse fulano pega um int e transforma para uma String.
De qualquer maneira, seu problema não precisa ser muito complicado - basta usar o tal do compareTo, que mostrei acima. Não precisa ficar convertendo/desconvertendo a menos que, para você, “001” e “1” sejam a mesma coisa; nesse caso, é realmente necessário converter para inteiros.
pvrsouza
Veja se dá para entender assim:
for(inty=0;y<numeros.length;y++){for(intx=0;x<numeros.length-1;x++){/* * numeros[x + 1] e numeros[x] retornam um String * Esta comparação "<" ou ">" com Strings não é possível pos isto a conversão: * Integer.parseInt(numeros[x + 1]) e Integer.parseInt(numeros[x]) */if(Integer.parseInt(numeros[x + 1])<Integer.parseInt(numeros[x])){/* *auxiliar recebe um int *Aqui ele já esta recebendo um String convertido em Int. */auxiliar=Integer.parseInt(numeros[x + 1]);/* * numeros recebe um String pois foi inicializado como um vetor de String. * Neste caso realmente a conversão não é necessária porque eles são de tipos identicos. */numeros[x + 1]=numeros[x];/* *Numero recebe um String por isto a conversao de auxiliar, que é um int para String. */numeros[x]=String.valueOf(auxiliar);}}}
Esse fulano pega um int e transforma para uma String.
De qualquer maneira, seu problema não precisa ser muito complicado - basta usar o tal do compareTo, que mostrei acima. Não precisa ficar convertendo/desconvertendo a menos que, para você, “001” e “1” sejam a mesma coisa; nesse caso, é realmente necessário converter para inteiros.
Certíssimo!! Tb recomendo olha esta documentação e usar o compareTo().
Só postei o código “tosko” para tentar desenvolver o raciocínio inicial dele. Eu acho o Booble Sort bem didático para quem está comecando.
rijava
EU FIZ UM EXEMPLO AQUI PRA SIMPLIFICAR O USO DO String.valueOf()
int numero = 54;
String convertido;
convertido = String.valueOf(numero);
System.out.println(convertido); //vai mostrar 54.
numeros[x+1] = inteiro.
dai dps : numeros[x+1] = uma string…
nao entendi isso…
Veja o que eu coloquei no segundo código que eu mandei:
/*
* numeros recebe um String pois foi inicializado como um vetor de String.
* Neste caso realmente a conversão não é necessária porque eles são de tipos identicos.
*/
numeros[x + 1] = numeros[x];