Olá pessoal, como faço pra pegar o último caracter de uma String cujo valor nunca seria fixo?
Eu fiz um código onde consigo o resultado, já pesquisei e não consegui manipular um método que me permita fazer isso diretamente.
Na verdade, eu gostaria de fazer um código mais profissional e elegante.
Vejam o que fiz.
nomeString //recebido como parâmetro
int tamanho = nomeString.length();
String valor = nomeString.substring(tamanho-1, tamanho);
System.out.println("Último caracter da String: " + valor);
O indicado é isolar o seu código (que está OK) em um método estático, e tomar cuidado (nesse método com o caso em que a string de entrada é vazia (nesse caso, você vai tentar pegar length - 1 que vai dar -1, e vai tomar um StringIndexOutOfBounds.) Portanto, você tem de fazer um “if” também.
F
furacao123
como o thingol falou faz uma comparação se for diferente de null ou vazio executa o metodo
falows
D
dionat4n
Método português1:
public static char ultimoChar(String s) {
char r = (char) 0;
for (char c : s.toCharArray()) {
r = c;
}
return r;
}
Método português 2:
public static char ultimoChar(String s) {
char r = (char) 0;
int i = 0;
do {
try {
r = s.charAt(i++);
} catch (IndexOutOfBoundsException e) {
return r;
}
} while (true);
}
:lol:
W
Winthorp
Obrigado pelas dicas galera,
na verdade, eu havia tentado o que o alves.Felipe indicou, mas estava dando erro, pois eu havia colocado dentro de um if, e achei que não funcionava sem olhar o porquê do erro, pois a função retorna um caracter ao invés de um tipo booleano.
if(nomePacote.charAt(nomePacote.length()-1));Type mismatch: cannot convert from char to boolean
Abs a todos.
M
marcobiscaro2112
Você deve comparar com algo que retorne true ou false dentro do if e só depois retornar algo. Algo do tipo:
/**Videpróximarespostaparaocódigocorreto*/publicstaticcharultimaLetra(Stringnome){if(nome!=null&&nome.length>0){// aqui você pega o último charreturnnome.charAt(nome.length-1);}return(char)0;}
B
Bruno_Laturner
marcobiscaro2112:
Você deve comparar com algo que retorne true ou false dentro do if e só depois retornar algo. Algo do tipo:
public static char ultimaLetra(String nome) {
if (nome != null && nome.length() > 0) {
// aqui você pega o último char
return nome.charAt(nome.length() - 1);
}
return (char) 0;
}
Corrigido
M
marcobiscaro2112
Obrigado pela correção.
O que retorna o comprimento de uma String é o MÉTODO length(), em oposição ao ATRIBUTO length de um array.
O correto é o código de baixo.
W
Winthorp
Vlw galera, esse problema já está resolvido, eu entendi o que havia feito de errado.