Sequência numérica

Alguém pode me ajudar com a função abaixo?
O objetivo é verificar se os números de uma senha estão em sequência crescente ou decrescente.

public class Tools {
    // retorna true p/ senha correta
 
	static boolean validatePassword(Context context, String strPassword) {

        // recebe uma string com a senha no padrao "123456" ou "654321"       
       
	   char[] arrayPassword = strPassword.toCharArray(); // monta lista c/ os caracteres da senha ["1", "2", ...]

        for (int item = 0, length = (strPassword.length()); item < length; item++) { //monta uma lista c/ os inteiros da senha
           
            int numInt1 = strPassword.charAt(item); // converte o string "0"->48

            // nao consegui me livrar deste if pois o programa falha se eu tentar: 
			// ->  int numInt2 = strPassword.charAt(item + 1);
            if (item <  ((strPassword.length()) -1)) { // verifica a ordem dos numeros da senha
     
                int numInt2 = strPassword.charAt(item + 1); // converte o string "1"->49

                if ((numInt1 - numInt2 == -1) || (numInt1 - numInt2 == 1)) {
                    Toast.makeText(context, "Os numeros: " + numInt1 + " e " + numInt2 + " sao sequencias", Toast.LENGTH_LONG).show();
                } else {
                    Toast.makeText(context, "Os numeros: " + numInt1 + " e " + numInt2 + " nao sao sequencias", Toast.LENGTH_LONG).show();
                }

            }
        } // end of for
        return true; // retorno p/ testes
    }

}

@velasquez,

Qual o problema você está enfrentando?

Eis uma solução:

char[] arrayPassword = strPassword.toCharArray();

if (arrayPassword[0] < arrayPassword[arrayPassword.length - 1]) {
  // Se o primeiro elemento for menor que o ultimo, então a ordem é crescente
} else {
  // Caso contrário, é decrescente
}

O código acima não contempla a situação em que o primeiro digito é igual ao último, mas vc disse que só a duas possibilidades, então acredito que será o suficiente.

Obrigado pelo retorno , gbueno
Meu problema é saber se o caminho esta correto e como melhorar a função.
Agradeço pela contribuição

wldomiciano,
Obrigado pelo retorno,
Por favor como estou iniciando no assunto aceito tod sugestão para melhorar minha idéia.
Agradeço pela contribuição.

Ah sim. Acho que você não estava no caminho errado, mas também não estava totalmente certo.

Fiz algumas modificações em sua implementação, veja abaixo:

public boolean validatePassword(String strPassword) {

    char[] arrayPassword = strPassword.toCharArray(); 
    boolean isValid = false;
    for (int i= 0; i < arrayPassword.length - 1; i++){
        if((arrayPassword[i] - arrayPassword[i + 1] == -1) || (arrayPassword[i] - arrayPassword[i + 1] == 1))
        {
            isValid = false;
        } 
        else 
        {
            isValid = true;
        }
    }
    return isValid;
}

Se tiver alguma duvida, manda ai…

@gbuenoo

Vou testar seu código.
Mais uma vez agradeço pela ajuda.

1 curtida

@wldomiciano
Obrigado novamente pela atenção.
Vou testar o seu código.
Espero permitir que a senha tenha apenas 2 digitos en sequência intercalados,

Ex: 040678
Vou tentar isto depois.