Erro em IF [RESOLVIDO]

10 respostas
ideiainformatica

O que tem de errado neste FOR e neste IF:

for(int i=0;i<linhas;i++)

{

String tipt = registros.get(i).substring(1, 2);

String mest = registros.get(i).substring(6, 6);

String valt = registros.get(i).substring(13, 12);

if ((tipt.equals(IR)) AND (mest < anomes) AND (valt < v))

{

pert = registros.get(i).substring(26, 5);

dedt = registros.get(i).substring(32, 12);

}

}

Qual a melhor forma de testar se um campo é diferente de outro? Tentei <>, not campo.equal mas nada deu certo.

E a melhor forma de colocar IFs com AND e OR?

10 Respostas

K

and = &&
or = ||

para saber o tamanho da string use o suaString.length()
para saber se uma String é igual a outra vc tem q definir se vai fazer diferença entra maiúsculas e minusculas
ou entao fazer o (“tantOFaz”)equalsIgnoreCase(“tantoFAZ”) que vai resultar true

E

Rapaiz, você não leu a documentação direito. substring não é a mesma coisa que MID do VB ou substr do C++.
O primeiro parâmetro é a posição inicial (em strings do Java, a posição inicial é zero) e o segundo parâmetro é 1 depois da posição final.
Outro probleminha: se a sua string é mais curta que a posição inicial ou final, então vai ocorrer um erro de execução. Portanto não aconselho usar substring assim, cru, na raça, ou como eu diria “sem camisinha”.
Aconselharia você a encapsular esse método para que ele funcione do jeito que você está acostumado.

Você provavelmente precisaria fazer algo como:

pert = registros.get(i).substring(26, 26+5);
dedt = registros.get(i).substring(32, 32+12);
ideiainformatica

Eu sei como é o substring, começo sempre do zero, tudo bem, e tenho certeza que não terei campo não preenchido, além de serem só zeros, portanto sem problema de maiúsculo ou minúsculo, exceto no campo tipt (que peguei das duas primeiras posições, 0 e 1).

Para dizer a verdade, nem sei qual a melhor documentação, se for no developer.android, acho muito reuim pela falta de exemplos.

Como não localizei o que usar para comparar se um campo é maior, maior ou igual, menor nem menor ou igual a outro.

No comando:

if ((tipt.equals(“IR”)) && (mest > anomes) && (valt <= v))

Diz que os símbolos > e >= são “undefined”

Como substituí-los?

E

Conselhinho - mest, anomes, valt, v são strings com valor numérico? Se forem, então converta essas strings para números, e compare os números.
Senão você vai ter umas surpresas desagradáveis, do tipo “0001” ser maior que " 10".

De qualquer forma, para saber se a string s1 é maior que a string s2, use:

s1.compareToIgnoreCase (s2) > 0

Os operadores “==”, “<”, “<=”, “>”, “>=” não devem ou não podem ser usados com strings. Isso é uma chateação do Java.

E

Como eu disse, você não sabe como é o substring. Você acha que o segundo parâmetro é o comprimento desejado :frowning:

ideiainformatica

Já mudei o substring, realmente estava enganado.
São strings preenchidas com zeros ã esquerda e do mesmo tamanho, portanto o erro citado não deve acontecer.
Vou fazer com valores.
Obrigado, amigo, quando estiver ok eu informo que foi resolvido.

Daniel Tibúrcio
Ideia Informática Ltda.
http://www.ideiainformatica.com.br
([telefone removido]
Skype ideia_daniel
"O Senhor é o meu Pastor, nada me faltará" Salmo 23:1

ideiainformatica

Um dos campos da minha comparação, apesar de ser numérico no formato AAAAMM (ano e mês) estava como String, e ao converter para double passo a dar erro.

O que eu faço é pegar o conteúdo de dois spinners (messp e anosp) e concatenar com o comando abaixo, fi nele que deu o erro:

String anomest = anosp.toString() + messp.toString();

Só que vi que o conteúdo retornado não é numérico.

Achei algo sobre pegar o conteúdo de spinner, mas não entendi muito bem, podem me ajudar?

Se eu precisar comparar se um string é maior, menor, maior ou igual ou menor ou igual a outro, como devo fazer, já que não aceita > < >= <=?

E

entanglement:

De qualquer forma, para saber se a string s1 é maior que a string s2, use:

s1.compareToIgnoreCase (s2) > 0

Os operadores “==”, “<”, “<=”, “>”, “>=” não devem ou não podem ser usados com strings. Isso é uma chateação do Java.

Por favor, leia com mais atenção… Se precisar da referência, http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#compareToIgnoreCase(java.lang.String)

ideiainformatica

Faltou alguém explicar como pegar o conteúdo do spinner, pois não entendi bem.

Poxa, este link do site da Oracle é ruim demais de usar.

F
Spinner a = new Spinner();

 a.getSelectedItem().toString();
Criado 21 de março de 2013
Ultima resposta 26 de mar. de 2013
Respostas 10
Participantes 4