Question

j'ai donc écrire du code java à :

  • Saisir un nom de
  • Format de nom en cas de titre
  • D'entrée de deuxième nom
  • Format de nom en cas de titre
  • De les afficher dans l'ordre de l'alphabet

je sais que Le Java une classe de Personnage a les méthodes isLowerCase(), isUpperCase, toLowerCase() et toUpperCase(), que vous pouvez utiliser dans l'examen d'une chaîne de caractère par caractère.Si le premier caractère est en minuscules, de les convertir en majuscules, et pour chaque tour de caractères, si le personnage est en majuscules, de les convertir en minuscules.

la question est de savoir comment je vérifie chaque lettre ?quel type de variables et de chaînes devrait-elle être contenue ?pouvez-vous s'il vous plaît aider?

Était-ce utile?

La solution

Vous devez utiliser StringBuilder, à l'aide de la manipulation de chaîne .. De cette façon, vous finissez par créer un nombre moins élevé d'objets.

StringBuilder s1 = new StringBuilder("rohit");
StringBuilder s2 = new StringBuilder("jain");

s1.replace(0, s1.length(), s1.toString().toLowerCase());
s2.replace(0, s2.length(), s2.toString().toLowerCase());            

s1.setCharAt(0, Character.toTitleCase(s1.charAt(0)));
s2.setCharAt(0, Character.toTitleCase(s2.charAt(0)));

if (s1.toString().compareTo(s2.toString()) >= 0) {
    System.out.println(s2 + " " + s1);

} else {
    System.out.println(s1 + " " + s2);
}

Autres conseils

Vous pouvez convertir le premier caractère en majuscules, puis minuscule le reste de la chaîne:

String name = "jOhN";
name = name.substring(0, 1).toUpperCase() + name.substring(1).toLowerCase(); 
System.out.println(name); // John

Pour traverser les chaînes de traversée utilisant uniquement la classe de cordes, itérale à travers chaque caractère d'une chaîne.

String s = "tester";
int size = s.length(); // length() is the number of characters in the string
for( int i = 0; i < size;  i++) {
    // s.charAt(i) gets the character at the ith code point.
}

Cette question réponses Comment "changer" une chaîne - vous ne pouvez pas. La classe StringBuilder fournit des méthodes pratiques pour éditer des caractères à des indices spécifiques.

On dirait que vous voulez vous assurer que tous les noms sont correctement capitalisés, par exemple: "Martin Ye" -> "Martin Ye", auquel cas vous voudrez parcourir l'entrée de chaîne pour vous assurer que le premier caractère de la Chaîne et caractères après que d'espace sont capitalisés.

Pour alphabétiser une liste, je suggère de stocker tous les noms entrés à une arraylist ou d'un autre objet de collections, créant un comparateur qui implémente le comparateur et qui transmet cela à collections.sort () ... Voir sur comparable comparable VS.

Cela devrait le réparer

List<String> nameList = new ArrayList<String>();
    nameList.add(titleCase("john smith"));
    nameList.add(titleCase("tom cruise"));
    nameList.add(titleCase("johnsmith"));
    Collections.sort(nameList);
    for (String name : nameList) {
        System.out.println("name=" + name);
    }

public static String titleCase(String realName) {
    String space = " ";
    String[] names = realName.split(space);
    StringBuilder b = new StringBuilder();
    for (String name : names) {
        if (name == null || name.isEmpty()) {
            b.append(space);
            continue;
        }
        b.append(name.substring(0, 1).toUpperCase())
                .append(name.substring(1).toLowerCase())
                .append(space);
    }
    return b.toString();
}

String a une méthode toCharArray qui renvoie un nouvellement allouée char[] de ses personnages.Rappelez-vous que tout Strings sont immuable, les éléments d'un tableau peuvent être réaffectés.

De même, String a un constructeur qui prend un char[] représentant les personnages de la nouvellement créée String.

Donc, la combinaison de ces, vous avez une manière d'obtenir à partir d'une String pour un char[], modifier la char[], et de retour dans un nouveau String.

Ceci peut être réalisé dans un certain nombre de façons, la plupart de ce qui va venir vers le bas pour les détails des exigences.

Mais le principe de base est la même. String est immuable (c'est le contenu ne peut pas être changé), donc vous avez besoin loin d'extraire les caractères de la String, convertir le premier caractère en majuscule et de reconstituer une nouvelle String à partir de la char tableau.

Comme cela a déjà été souligné, c'est relativement simple.

L'autre chose que vous pourriez avoir besoin de faire, est de gérer de multiples noms (prénom, nom) en un seul passage.Encore une fois, c'est relativement simple.La partie la plus difficile, c'est quand vous pourriez avoir besoin de découper une chaîne sur plusieurs conditions, alors vous aurez besoin de recourir à une expression régulière.

Voici un exemple très simple.

String name = "this is a test";
String[] parts = name.split(" ");
StringBuilder sb = new StringBuilder(64);
for (String part : parts) {
    char[] chars = part.toLowerCase().toCharArray();
    chars[0] = Character.toUpperCase(chars[0]);

    sb.append(new String(chars)).append(" ");
}

name = sb.toString().trim();
System.out.println(name);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top