Recursividade quebra de strings

7 respostas
T

Boa tarde Pessoas

Estou precisando implementar um método que seja RECURSIVO...e retorne um BOOLEAN...

E dentro do método, verifique CADA caractere se o mesmo é um número entre 0 e 9.

Estou fazendo esse primeiro sem recursividade para primeiro aprender a lógica e depois pensar de forma recursiva

Gostaria de uma ajuda de vcs

public class TestandoMetodo  //O METODO TODO ESTA ERRADO EM SI PORQUE NÃO É RECURSIVO...//1 aqui é um ponto que preciso de ajuda
{

	public static void main(String[] args) 
	{
		String palavra = "Tiago1";


		char[] str = palavra.toCharArray();  //isso aqui quebra a palavra em um vetor de string, certo??


		for (int i = 0; i < str.length; i++)  
		{
			if(str[i] >= 0 && str[i] <= 9 )  //2 AQUI TA ERRADO, como faço para verificar um vetor de strings com numeros?
			{
				System.out.println("Tem um numero " + str[i] + " na posicao " + i);	
			}

		}
		System.out.println("Não tem nenhum número ");
	}
}

Desculpa se não fui claro,

7 Respostas

Rodrigo_Sasaki

E quando o método retorna true e quando retorna false?

Só pra constar, o toCharArray retorna um vetor de char e não de String :slight_smile:

T

Opa valeu imagina que tinha diferença mas achei que se falava do mesmo jeitoo…enfim sabe como comparar um vetor de char com int? ou vice versa?

E

Bom,

char c = '7';
if ('0' <= c && c <= '9') {
    System.out.println (c + " eh um digito");
}
T

Esse resolveu…!

Agora eu preciso implementá-lo de forma recursiva…

Pode explicar qual é a ideia da sua lógica??

Rodrigo_Sasaki

A ideia do nosso amigo entanglement-san é baseada na tabela ASCII.

Todos os caracteres possuem um código, e não por coincidência, eles seguem uma certa ordem.

Por exemplo, os caracteres de ‘0’ até ‘9’ são um seguido do outro, com um código simples você consegue ver isso: public static void main(String[] args){ char inicio = '0'; char fim = '9'; for(char c = inicio ; c <= fim ; c++){ System.out.println(c + " código -> " + ((int)c)); } }Se executar isso você vai ver a seguinte saída:0 código -> 48 1 código -> 49 2 código -> 50 3 código -> 51 4 código -> 52 5 código -> 53 6 código -> 54 7 código -> 55 8 código -> 56 9 código -> 57E a condição que ele fez é baseada nisso. Verificar se o caractere em questão está entre os códigos 48 e 57 na tabela, porque se estiver, ele será um número

T

Muito obrigado pela explicação brother :slight_smile:

ViniGodoy

Um numero será valido se.
- Todos os caracteres forem dígitos
- O caracter atual estiver de 0 até 9
- O próximo também for um dígito

Algo como:
public boolean saoDigitos(int index, String palavra) {
   //Retorna true se todos foram dígitos
   if (index == palavra.lenght()) 
      return true;

   char c = palavra.charAt(index);
   return c &gt;= '0' && c &lt;= '9'              //Testa se o atual é de 0 até 9 
          && saoDigitos(index+1, palavra);  //Testa o próximo
}

public boolean isNumeric(String palavra) {
    return saoDigitos(0, palavra);
}
Criado 9 de maio de 2013
Ultima resposta 11 de mai. de 2013
Respostas 7
Participantes 4