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
publicclassTestandoMetodo//O METODO TODO ESTA ERRADO EM SI PORQUE NÃO É RECURSIVO...//1 aqui é um ponto que preciso de ajuda{publicstaticvoidmain(String[]args){Stringpalavra="Tiago1";char[]str=palavra.toCharArray();//isso aqui quebra a palavra em um vetor de string, certo??for(inti=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 ");}}
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
T
Tiago_KA
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
entanglement
Bom,
charc='7';if('0'<=c&&c<='9'){
System.out.println(c+" eh um digito");
}
T
Tiago_KA
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
Tiago_KA
Muito obrigado pela explicação brother
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:
publicbooleansaoDigitos(intindex,Stringpalavra){
//Retornatruesetodosforamdígitosif(index==palavra.lenght())returntrue;charc=palavra.charAt(index);returnc>= '0' && c <= '9' //Testa se o atual é de 0 até 9 &&saoDigitos(index+1,palavra); //Testa o próximo
}
publicbooleanisNumeric(Stringpalavra){
returnsaoDigitos(0,palavra);
}