laço de repetição

4 respostas
F
String expressao = "12121212121212121212856498165320547906087090606057";  
  
 int count = 0;  
 boolean notFound = true;  
 while(notFound && expressao.length() > count*2) {  
     count ++;  
     String primeiraParte = expressao.substring(0,count);  
      String segundaParte = expressao.substring(count,2*count);  
     notFound = !segundaParte.equals(primeiraParte);  
 }  
 System.out.println(expressao.substring(0,count));
A parte q repete no numero 12121212121212121212856498165320547906087090606057 é o 12 (ok)

Pq o método acima funciona para alguns números e para outros não como o número abaixo
111161111611116111161111721423211211164111114235181 cujo método imprime 1 em vez de 11116
Alguem pode me ajudar
Valeu

4 Respostas

Lavieri

depois que vc encontrar uma primeira referencia positiva para o teste… faça o teste para a casa seguinte, se for falso, é pq vc encontrou o que queria, se for verdadeiro, continue seguindo, ate sair falso

F

Desculpa mas não consegui entender.
Muito obrigado por responder minhas perguntas.

Lavieri

por exemplo…

“111161111611116111161111721423211211164111114235181”

quando vc rodar, vai dar positivo no primeiro passo

pois ele via testar… “'1” == “1” … nesse ponto vai dar positivo…

depois o que falei é testar o proximo ponto ai vc tera

“11” == “11” vai dar positovo novamente, agora vc continua o teste
“111” == “161” vai dar negativo … a partir desse ponto, vc conema a procurar um ponto positivo, caso encontro então esse proximo ponto é o que vc ker

“1111” == “6111” vai dar negativo
“11116” == “11116” agora como vc encontrou um segundo poonto positivo, é pq este é o ponto

O

A lógica do seu método está quase certa, mas count tem que começar com a metade do tamanho da string e ir diminuindo.

Criado 15 de março de 2009
Ultima resposta 15 de mar. de 2009
Respostas 4
Participantes 3