Pegar último caracter de String. [RESOLVIDO!]

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);

agradeço a ajuda.

nomeString .charAt(nomeString .length()-1)

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.

como o thingol falou faz uma comparação se for diferente de null ou vazio executa o metodo

falows

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:

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.

Você deve comparar com algo que retorne true ou false dentro do if e só depois retornar algo. Algo do tipo:

/*
 * Vide próxima resposta para o código correto
 */
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;
}

[quote=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; } [/quote]
Corrigido

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.

Vlw galera, esse problema já está resolvido, eu entendi o que havia feito de errado. :wink: