Recursividade quebra de strings

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

[code]
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 ");
}

}[/code]

Desculpa se não fui claro,

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:

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?

Bom,

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

Esse resolveu…!

Agora eu preciso implementá-lo de forma recursiva…

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

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

Muito obrigado pela explicação brother :slight_smile:

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:

[code]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 >= ‘0’ && c <= ‘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);
}
[/code]