Eu preciso fazer uma classe com um método que retorne verdadeiro caso minha string que recebera numeros tenha 2 ou mais numeros repetidos na mesma sequencia, por exemplo:
string var = “123456”; retornaria falso
string var1=“12343”; retornaria falso
string var2= “12334”; retornaria verdadeiro pois tenho dois 3 repetidos consecutivamente.
Alguém pode me dizer se tem algum jeito de comparar caracter por caracter da mesma string, por exemplo:
“123456” comparar 1 com o 2, o 2 com o 3, o 3 com o 4, o 4 com o 5 e o 5 com o 6.
E se tem algum meio de destinguir letras de numeros numa string, por exemplo:
Se for digitado “12345a” pediaria para digitar novamente, pois tem de ser apenas numeros.
Quero testar o numero antes da variavel digitos ser carregada, não entendi como usar o ^[0-9]+$
Sou iniciante
peczenyj
De uma estudada em expressões regulares ou verifique a string caracter por caracter, numa maquina de estados
Rudy
Olha minha classe
/** *Classe que recebe um numero qualquer e retorna *verdadeiro caso esse numero tenho 2 digitos iguais *em sequencia *@author Rodolfo Jesus - 1CCPN *@version RA: 200813364 */publicclassComparaDigitos{privateStringdigitos;/** *Construtor da classe que vai receber um valor *e carregar o campo digitos. *@param numeros string - Recebe o valor a ser armazenado *em digitos */publicComparaDigitos(Stringnumero){digitos=numero;}/** *Método que compara os digitos do campo da classe *@return boolean - True se tiver algum digito igual *em sequência e false se não tiver. */publicbooleancomparaDigitos(){intcont=0;String[]digito=digitos.split("");//separa a stringint[]digitosSeparados=newint[digito.length];//cria um array para armazenar os carateresfor(intindex=0;index<digito.length;index++){digitosSeparados[index]=Integer.parseInt(digito[index]);}for(intindex=1;index<digitosSeparados.length;index++){intindex2=0;if(digitosSeparados[index2]==digitosSeparados[index]){cont++;index2++;}else{index2++;}}if(cont>0)returntrue;elsereturnfalse;}}
Compila, mas da erro na linha 33 na hora que executa
ops.rio
falae Rudy,
bom peguei a sua classe de teste e modifiquei, coloquei um método comparando dígito por dígito e outro método comparando por expressão regular.
estude-os
publicclassTeste{publicstaticvoidmain(String[]args){Testet=newTeste("12344j");System.out.println(t.comparaDigitos());System.out.println(t.comparaDigitosRegExp());t=newTeste("12344");System.out.println(t.comparaDigitos());System.out.println(t.comparaDigitosRegExp());}/** *Classe que recebe um numero qualquer e retorna *verdadeiro caso esse numero tenho 2 digitos iguais *em sequencia *@author Rodolfo Jesus - 1CCPN *@version RA: 200813364 */privateStringdigitos;/** *Construtor da classe que vai receber um valor *e carregar o campo digitos. *@param numeros string - Recebe o valor a ser armazenado *em digitos */publicTeste(Stringnumero){digitos=numero;}//Se existir caracter que nãos seja dígito retornará falsepublicbooleancomparaDigitos(){booleandigitoOk=true;for(inti=0;i<digitos.length();i++){if(!Character.isDigit(digitos.charAt(i))){digitoOk=false;}}returndigitoOk;}//Se existir caracter que nãos seja dígito retornará falsepublicbooleancomparaDigitosRegExp(){Patternp=Pattern.compile("^[0-9]+$");Matcherm=p.matcher(digitos);returnm.matches();}}