de um exemplo da string e um exemplo do resultado.
E
entanglement
Esse é o famoso problema que, enunciado de forma recursiva, seria mais ou menos assim:
Se a string tiver comprimento 1 e o caracter dessa string estiver entre 0 e 9, então retornar true, senão retornar false.
Senão, se a string tiver comprimento > 1, veja se a substring (1) (ou seja, a string original, descontada a primeira posição) é numérica.
Se a string tiver comprimento zero, ela não é numérica.
T
Tiago_KA
entanglement:
Esse é o famoso problema que, enunciado de forma recursiva, seria mais ou menos assim:
Se a string tiver comprimento 1 e o caracter dessa string estiver entre 0 e 9, então retornar true, senão retornar false.
Senão, se a string tiver comprimento > 1, veja se a substring (1) (ou seja, a string original, descontada a primeira posição) é numérica.
Se a string tiver comprimento zero, ela não é numérica.
Acho que você entendeu bem! Talvez até melhor que eu, rsrs
Olhem o enunciado…
Um problema comum em computação é a verificação se uma cadeia de caracteres de uma variável armazena um valor numérico, ou não.
Quer dizer, se em todas as posições desta variável se existem apenas números entre 0 e 9.
Altere o método isNumero() da classe ApenasCaracteres.java que recebe como argumento um parâmetro do tipo String e retorna um boolean,
sendo true quando existirem apenas números e false se em alguma posição existir algo que não for um número.
Esse método deve ser implementado de forma recursiva.
Qual é o algoritmo para verificar caractere por caractere se o mesmo é um numero entre 0 e 9??
E
entanglement
entanglement:
Esse é o famoso problema que, enunciado de forma recursiva, seria mais ou menos assim:
Se a string tiver comprimento 1 e o caracter dessa string estiver entre 0 e 9, então retornar true, senão retornar false.
Senão, se a string tiver comprimento > 1, veja se a substring (1) (ou seja, a string original, descontada a primeira posição) é numérica.
Se a string tiver comprimento zero, ela não é numérica.
Estou repetindo aqui, porque se você implementar exatamente como estou falando, vai ter a rotina. Não vou dar isso em Java de mão beijada. Só lhe dei a dica de usar s.substring (1).
Por exemplo, digamos que s = “123456789”. s.substring(1) é “23456789”, ou seja, é a string original, descontada a primeira posição.
T
Tiago_KA
entanglement:
entanglement:
Esse é o famoso problema que, enunciado de forma recursiva, seria mais ou menos assim:
Se a string tiver comprimento 1 e o caracter dessa string estiver entre 0 e 9, então retornar true, senão retornar false.
Senão, se a string tiver comprimento > 1, veja se a substring (1) (ou seja, a string original, descontada a primeira posição) é numérica.
Se a string tiver comprimento zero, ela não é numérica.
Estou repetindo aqui, porque se você implementar exatamente como estou falando, vai ter a rotina. Não vou dar isso em Java de mão beijada. Só lhe dei a dica de usar s.substring (1).
Por exemplo, digamos que s = “123456789”. s.substring(1) é “23456789”, ou seja, é a string original, descontada a primeira posição.
Certo mas eu tentei isso aí… mas eu não consigo pegar de 1 em 1 caracter…
por isso usei o toCharArray
J
JoaoOliveiraMlp
entanglement:
Então, é mais ou menos assim:
public static boolean isNumeric (String s) {
if (s.length() == 0)
return false;
else if (s.length() == 1)
return isDigit (s.charAt(0));
else return isNumeric (s.substring (1));
}
entanglement, seu código só verifica se o último caracter é numérico, falta uma coisinha no seu código.
Assim ele valida recursivamente cada caracter e quando chega no final volta validando os anteriores.
E
entanglement
s.substring (1) retorna uma string que é igual à string s, só que com o primeiro caracter removido. Acho que você está confundindo com s.substring(1,2) ou com s.substring (s.length() - 1, s.length())
J
JoaoOliveiraMlp
Exatamente, mas analise seu código, ele só vai checar se o último caracter é numérico, não o resto. Olha o trecho:
elsereturnisNumeric(s.substring(1));
Vai mandar a substring recursivamente, até chegar no último char e dizer se este é numérico, o retorno de todas as chamadas será a validação desse último caracter. Se adicionar a minha linha: