Comparando valores de String?

11 respostas
F_ix1

Olá pessoal, dei uma procurada na net e não achei nada que possa me ajudar no meu problema

public void BubbleSort(String[] vetora){ int tam = vetor.length; for(int i=0;i<tam-1;i++){ for(int j=0;j<tam-1;j++){ if(//OQUE UE FAÇO AQUI PARA COMPARAR STRINGS?//){ String aux; aux = vetora[j]; vetor[j] = vetor[j+1]; vetora[j+1] = aux; } } } }

no codigo acima, eu preciso comparar strings!

saber se A é maior que B ou se Z é menor que C

>

11 Respostas

R

Cara para obter o tamanho de uma String utiliza o metodo lenght(); que vai te retornar um numero inteiro. Então vc pode pegar os dados da String e passar para um inteiro e comparar.

int aInteiro = a.lenght();
int bInteiro = b.lenght();

if (aInteiro > bInteiro) {

//Seu codigo

}else{

//Seu codigo

}

F_ix1

rei_nl_ds:
Cara para obter o tamanho de uma String utiliza o metodo lenght(); que vai te retornar um numero inteiro. Então vc pode pegar os dados da String e passar para um inteiro e comparar.

int aInteiro = a.lenght();
int bInteiro = b.lenght();

if (aInteiro > bInteiro) {

//Seu codigo

}else{

//Seu codigo

}

é… o objetivo não é muito bem esse

o algoritmo é o BubbleSort que organiza valores.

oque eu preciso é o seguinte!

no vetor[0] eu tenho o valor B
no vetor[1] eu tenho o valor C

dentro do if eu preciso saber qual é o maior! ou o menor

eu sei que existe uma syntax para isso só não lembro qual

pvrsouza
if(vetor[i].compareTo(vetor[j]) < 0)
F_ix1

Deixa eu ver se entendi

o prefixo “< 0” nesse caso seria o comparativo se eu quero saber se é maior ou menor?

pvrsouza

Deixa eu ver se entendi

o prefixo “< 0” nesse caso seria o comparativo se eu quero saber se é maior ou menor?

O método compareTo tem 03 tipos de retorno possíveis:

[list]-Um número inteiro negativo: Que representa que o objeto comparado é MENOR do que o outro.[/list]
[list]-Um zero: Que representa que os objetos comparados são iguais[/list]
[list]-Um número inteiro positivo: Que representa que o objeto comparado é MAIOR do que o outro.[/list]

Neste caso, se o retorno do método vetor[i].compareTo(vetor[j]) for menor que zero ( <0 ), ele será um número inteiro negativo. Portanto será menor.

Sacou?

Da uma olhadinha aqui depois:
http://docs.oracle.com/javase/6/docs/api/java/lang/Comparable.html#compareTo(T)

F_ix1

Muito obrigado cara, sanou minha duvida!!! :smiley: :smiley: :smiley:

pvrsouza

F?ix~*:
Muito obrigado cara, sanou minha duvida!!! :smiley: :smiley: :smiley:

Beleza cara!

E já testou? Funcionou conforme esperado?
Se sim, coloca teu post como Resolvido.

:smiley:

F_ix1

Desculpa o double mas estou enfrentando um erro aqui

Exception in thread “main” java.lang.ArrayIndexOutOfBoundsException: 4

public void BubbleSort(String[] vetora){ int tam = vetor.length; for(int i=0;i&lt;tam-1;i++){ for(int j=0;j&lt;tam-1;j++){ if(vetora[j].compareTo(vetora[j+1]) &gt;0){ String aux; aux = vetora[j]; vetor[j] = vetor[j+1]; vetora[j+1] = aux; } } } }

exatamente no if acusa o erro, oque estou fazendo de errado? O.o

valor de vetora[j] é “c”
valor de vetora[j+1] é “e”

DavidUser

na linha 2 você não esta pegando o comprimento de “vetora” e sim de “vetor” que nem mesmo foi declarado nesse código; a mesma troca de “vetor” por “vetora” acontece na linha 8.

Não tem a ver com seu problema mas o j deve variar de “0” a “tam - 1 - i” pois os i maiores já estarão no final a cada iteração, por tanto, ordenados.

pvrsouza

É. Teu código tá meio complicado. :smiley:

Vou te passar a dica de como fazer o for…

for (int j = 0; j < tam; j++) { for (int i = j + 1; i < tam; i++) {

O resto é contigo…

:smiley:

F_ix1

Nossa velho, que passada de erro patética a minha!!!

muito obrigado

isso me ajudou a lembrar que preciso ir dormi!!!

obrigado mesmo!!

pvrsouza:
É. Teu código tá meio complicado. :smiley:

Vou te passar a dica de como fazer o for…

for (int j = 0; j &lt; tam; j++) { for (int i = j + 1; i &lt; tam; i++) {

O resto é contigo…

:-D

Opa!!! assim fica mais bonito!!! obrigado pela dica brother

vocês foram show!!!

Criado 26 de fevereiro de 2013
Ultima resposta 27 de fev. de 2013
Respostas 11
Participantes 4