Como comparar valores com para string java

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

>

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

}

[quote=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

}[/quote]

é… 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

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

Como comparar valores com para string java
pvrsouza:

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

Deixa eu ver se entendi

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

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

Deixa eu ver se entendi

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

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)

Muito obrigado cara, sanou minha duvida!!!

Como comparar valores com para string java
Como comparar valores com para string java
Como comparar valores com para string java

[quote=F?ix~*]Muito obrigado cara, sanou minha duvida!!!

Como comparar valores com para string java
Como comparar valores com para string java
Como comparar valores com para string java

[/quote]

Beleza cara!

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

Como comparar valores com para string java

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”

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.

É. Teu código tá meio complicado.

Como comparar valores com para string java

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…

Como comparar valores com para string java

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

muito obrigado

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

obrigado mesmo!!

[quote=pvrsouza]É. Teu código tá meio complicado.

Como comparar valores com para string java

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[/quote]

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

vocês foram show!!!

Boa tarde galera. Tenha essas duas String que são retornadas do base de dados string1 ="01 21 52 12 36 55" E string2 = "26 44 46 49 55 56";

preciso pegar os valores comuns entre as duas. Qual a melher forma para fazer isso? transforma-las em Array e depois percorrer nelas pegando os valores? ou tem uma outra forma mas pratica ou mas bonito.

Uma solução é utilizar a classe StringTokenizer
Ex:

StringTokenizer st = new StringTokenizer(string1, " ");//vai separar a string nos valores desejados, delimitando pelo espaço entre os valores. String elemento = null; while (st.hasMoreTokens()) { elemento = st.nextToken(); }

Aí faz a mesma coisa para a string2 e compara os valores dela com os da string1.

[quote=caiomacedor]Boa tarde galera. Tenha essas duas String que são retornadas do base de dados string1 ="01 21 52 12 36 55" E string2 = "26 44 46 49 55 56";

preciso pegar os valores comuns entre as duas. Qual a melher forma para fazer isso? transforma-las em Array e depois percorrer nelas pegando os valores? ou tem uma outra forma mas pratica ou mas bonito.[/quote]

Vamos lá.

import java.util.*; class ValoresComuns { public static void main(String[] args) { String s1 = "01 21 52 12 13 36 55"; String s2 = "26 13 44 46 49 55 56"; String[] v1 = s1.split (" "); String[] v2 = s2.split (" "); Set<String> set1 = new TreeSet<String> (Arrays.asList (v1)); Set<String> set2 = new TreeSet<String> (Arrays.asList (v2)); set1.retainAll (set2); System.out.println (set1); // Deve imprimir "[13, 55]" // Se você não sabe trabalhar com Set, então vou converter em um Array para você. String[] s3 = set1.toArray (new String[0]); for (int i = 0; i < s3.length; ++i) { System.out.println (i + ":" + s3[i]); } } }

Não é a solução mais bonita, mas tmb não é custosa…
Faz um loop e compara elemento por elemento… espaços fazem diferenca? Letras maísuculas/minúsculas? Se não, ai fica fácil… nem precisa transformar em Array…

[code]public static void main(String[] args) { String a = “a b c 1 2 3”;

String b = “a b c 1 3 2”;

int indiceDiferenca = comparaStrings(a, b); if (indiceDiferenca == -1){ System.out.println("São iguais"); }else{ System.out.println("Diferença em " + indiceDiferenca); } a = "a b"; b = "a b"; indiceDiferenca = comparaStrings(a, b); if (indiceDiferenca == -1){ System.out.println("São iguais"); }else{ System.out.println("Diferença em " + indiceDiferenca); } } /** * Método que vai comparar duas strings * @param s1 * @param s2 * @return * O índice em que foi encontrada a primeira ocorrência de diferença. * Se as strings forem iguais, retornará -1. */ public static int comparaStrings(String s1, String s2){ int i = 0; /* * Vai um por um passeando pelos dois vetores */ while ((i < s1.length()) && (i < s2.length())){ if (s1.charAt(i) != s2.charAt(i)){ return i; } i++; } /* * Se chegar aqui, ou são iguais ou um é menor que o outro (nesse caso, diferentes) */ if (s1.length() == s2.length()){ return -1; } /* * Se chegar aqui, um é menor que o outro... "i" conterá o último índice do menor vetor */ return i; }[/code]

ok?

Muito obrigado a todos galera, Mas a a forma que as se adequa a minha nescessidade é a forma que o “entanglement” mencionou. Isso porque eu preciso separar os valores comuns. Veja como ficou:

String[] string1 = "01 21 52 12 36 55".split(" "); String[] string2 = "26 21 46 49 55 01".split(" "); Set<String> set1 = new TreeSet<String> (Arrays.asList(string1)); Set<String> set2 = new TreeSet<String> (Arrays.asList(string2)); List<String> comuns = new ArrayList<String>(); set1.retainAll(set2); for (String string : set1) { comuns.add(string); } System.out.println(comuns);