eu tenho um campo Txfield e pego o valor dele e comparo com outro campo porem que ja foi inserido no BD.
porem estou com duvidas de como utilizar o compareTo , pois os dois valores sao do tipo BigDecimal.
o problema é que meio que ja me acostumei com o equals entaum nao comprendi muito bem como se usa o compareTo
segue abaixo o codigo que preciso usar o compareTo
Obrigado
if (nf.format(txValorDesconto.getText()).substring(3).compareTo(nf.format(sacado.getValorDesconto()).substring(3))==(O que eu coloco aqui ???)){
}
O compareTo() e compareToIgnoreCase() retorna a diferença de duas Strings definindo a sua ordem alfabética entre elas.
Seguindo a tabela ASCII, ‘a’ vem antes de ‘b’ logo usando eles no método compareTo retornaria -1 pelo fato da distancia ser somente entre uma letra.
No primeiro exemplo do drsmachado a comparação se dá por ‘abc’ e ‘abcd’, logo a comparação é feita letra a letra enquanto cada letra compara resultar em 0 (equivalente) passase para a proxima letra.
De uma forma mais abrangente, o método comparteTo() é definido na Interface Comparable e compara dois objetos, retornando um valor negativo, zero, ou um valor positivo se o objeto for menor, igual ou maior que o objeto especificado.
entaum no caso com faria a minha comparação teria que atribuir uma variavel por exemplo result= a compareto(b)
algo assim ??
e naum compreendi a relação do ==0 >0 no final da comparação pois estou usando e funciona perfeitamente…
tenho comparações deste tipo
if (txValorDesconto.getText().compareTo("0,00") == 0) {
axei que tinha compreendido porem agora nao sei esse ==0 que uso realmente representa o (0) ??
Se você deseja verificar comparação entre Strings use equals().
O compareTo() é para comparação de ordem léxica, no caso usado mais em ordenação alfabética seguindo a tabela ASCII.
Ordenando os valores da lista.
Exemplo:
[code] String[] lista = new String[] { “k”, “4”, “m”, “1”, “k”, “4”, “z”, “3” };
String aux;
for (int i = 0; i <= lista.length; i++) {
for (int c = i + 1; c < lista.length; c++) {
int compareTo = lista[i].compareTo(lista[c]);
if (compareTo > 0) {
aux = lista[i];
lista[i] = lista[c];
lista[c] = aux;
}
}
}
for (String string : lista) {
System.out.println(string);
}[/code]
Se tentar fazer comparação com números monetários como parece ser seu caso irá dar problema.
System.out.println(numeroMon.compareTo(numeroMon2)); // retorna 1 que indica que numeroMon em ordem alfabetica vem depois de numeroMon2
BigDecimal bigDecimal = new BigDecimal("0.00");
BigDecimal bigDecimal2 = new BigDecimal("0.0");
System.out.println(bigDecimal.compareTo(bigDecimal2)); //retorna 0 que indica que são de mesmo valor[/code]
[color=red]OBS[/color]:BigDecimal não aceita ‘,’ como decimal.