Comment puis-je compter le nombre de caractères dans une chaîne de caractères? - Mise à jour

Par exemple, la chaîne "abc" devrait donner les 3 personnages uniques, tandis que la chaîne "abcccd" donnerait 4 personnages. Je ne suis pas autorisé à utiliser la Carte, table de hachage, TreeMap, Ensemble, HashSet, StringBuffer ou TreeSet dans ce.

Jusqu'à présent, je suis en train d'utiliser une boucle for, mais quand je lance le programme, j'obtiens 0 caractères uniques. Je suis un peu nouveau à Java, donc je n'ai vraiment aucune idée de ce que je suis en train de faire.

Edit: j'ai donc modifié le code et je suis arriver à un résultat, mais il finit par être 1 de moins que ce que je veux. Je vais taper " abc " et le résultat viendra comme "2 caractères uniques", au lieu de trois. De compteur que j'ai mis (uniqueChars + 1) dans la println déclaration. Est-ce une bonne correction? Si l'utilisateur met rien, il va encore dire qu'il y a 1 caractère unique.

Code mis à jour:

    userText = userText.toLowerCase(); //userText is declared earlier in the program 
                                       //as the user's input. Setting this to lowercase 
                                       //so it doesn't say "a" and "A" are two different 
                                       //characters.
    int uniqueChars = 0;
    for (int i = 0; i < lengthText-1; i++) { //lengthText is declared earlier 
                                              //as userText.length();
        if (userText.charAt(i) != userText.charAt(i+1))
            uniqueChars++;
    }
    System.out.println("there are " + (uniqueChars + 1) + " unique characters in your string.");
}
Pensez-vous que votre boucle sera exécuté? Regardez votre arrêt maladie. En plus de cela, votre logique est erronée, vous êtes seulement à la comparaison des caractères adjacents.
La boucle s'exécute, il me donne juste la réponse incorrecte. Si je tape "abc", le programme retourne 0 caractères uniques au lieu de 3. J'ai aussi essayé de mettre "i < lengthText" dans la boucle et qui me donne encore la mauvaise réponse.

OriginalL'auteur newJavaUser | 2014-03-25