Java-mettre la première lettre en majuscules

Résolu/Fermé
popo15 Messages postés 57 Date d'inscription jeudi 24 avril 2008 Statut Membre Dernière intervention 29 novembre 2009 - 29 nov. 2009 à 19:04
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 - 18 mai 2013 à 13:53
Bonjour,
Je souhaiterai faire un programme java (sous eclipse) qui met la première lettre d'un mot composé en majuscule.
Par exemple : en entrée : la la
sortie: La La

Je ne sais pas comment m'y prendre pour le deuxième mot.
Merci d'avance.

Cordialement.
popo15
A voir également:

8 réponses

Utilisateur anonyme
1 déc. 2009 à 04:17
Salut,

J'ai justement un petit code que j'ai légèrement modifié pour faire çà.
Je le poste même si c'est résolu...

// AVEC SPLIT ET REGEX
      
      // test avec une des "chaine1" ci-dessous
         //String chaine1 = "la          la";
         //String chaine1 = "ba be bi bo bu";
         //String chaine1 = "1er   la,       2eme la";
         String chaine1 = "1234 5678 abc";
         System.out.println("");
      	
         String chaine2 = "";
         
         // compilation de la regex
         Pattern patern = Pattern.compile(" ");    //(" "); // le séparateur est un espace
         // éclatement en sous-chaînes
         String[] sousChaines = patern.split(chaine1);
         for(int i = 0; i < sousChaines.length; i++)
         {
            {
               if(!sousChaines[i].equals(""))
               {
                  String ch2 = sousChaines[i].substring(0, 1);
                  ch2 = ch2.toUpperCase();
                  ch2+= sousChaines[i].substring(1) + " "; // on ajoute 1 espace entre les 2 sous-chaines
                                                           // mais aussi apres la derniere ***
                  chaine2+= ch2;
               }  
            }
         }
         System.out.println("chaine1 = \"" + chaine1 + "\"");
         chaine2 = chaine2.trim(); // *** suppression de l'espace final
         System.out.println("chaine2 = \"" + chaine2 + "\"\n");
         
         //Ou bien
         System.out.println("chaine1 avant = \"" + chaine1 + "\"");
         chaine2 = chaine2.trim(); // *** suppression de l'espace final
         chaine1 = chaine2;
         System.out.println("chaine1 apres = \"" + chaine1 + "\"");


Ce code peut ètre amélioré!...

Cordialement,

Dan
2
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 660
29 nov. 2009 à 19:05
il faut que tu cherches dans ta chaine les espaces, et tu sais qu'après un espace tu mets la lettre en majuscule. tout ça en boucle.
1
popo15 Messages postés 57 Date d'inscription jeudi 24 avril 2008 Statut Membre Dernière intervention 29 novembre 2009
29 nov. 2009 à 19:14
Je mets :


String motComposé;
while(i<=motComposé.lenght())
{
char c=motComposé.charAt(i);
if(c==' ')
.......

Je vois pas du tout en faites. Peut tu m'aider un peu plus ?
0
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 660
29 nov. 2009 à 19:41
1) i<=motComposé.lenght() est une mauvaise idée, plutôt " < " que "<=" si tu ne veux pas avoir d'erreur à la fin.

2)utilises une variable booléenne comme "drapeau" pour dire s'il faut mettre en maj ou pas :
String motCompose;

boolean mettreEnMaj = true; 
// faut le mettre à true au départ car la première lettre sera de toutes façon mise en majuscules

char c;
while(i<motCompose.length())
{
  c=motCompose.charAt(i);
  //si le drapeau "mettreEnMaj" vaut vrai, il faut rendre la lettre courante majuscule.
  if (mettreEnMaj) {
    //ici le code qui met la lettre courante en majuscules si c'est une lettre
    // (ne rien faire si ce n'est pas une lettre)
  }

  
  if(c==' ') {
    mettreEnMaj = true;
  } else {
    mettreEnMaj = false;
  }
}



PS et EDIT : Bien sûr il y a des choses inutiles dans mon algorithme, notamment dans le cas où il y a plusieurs espaces à la suite. Mais ce n'est pas bien grave et ça devrait fonctionner.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
popo15 Messages postés 57 Date d'inscription jeudi 24 avril 2008 Statut Membre Dernière intervention 29 novembre 2009
29 nov. 2009 à 19:48
Je comprend ce que tu as écrit mais je suis incappable d'écrire le code dans le if, car moi je mettrai c=c.toUpperCase(), ce qui est impossible vu les types
0
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 660
29 nov. 2009 à 20:40
oui c'est vrai. ça va avoir l'air un peu compliqué.

D'ailleurs je viens de penser à un truc : de toutes façons il te faut recréer la liste de départ car les String sont constantes en Java.

Une possibilité est de traduire cette string par un tableau de char (un char [] ) grace à la méthode toCharArray() de ta String de départ.

On va boucler sur les éléments de ton char [] , qu'on pourra modifier.

Ensuite on peut recréer une string à partir de ce char[] grace à un des constructeurs de String.


Pour la boucle :
Ensuite, chaque caractère tu le prends donc du tableau.
Pour le code de mise en majuscule :
Si c'est une lettre (de valeur plus grande ou égale à 'a' mais plus petite ou égale à 'z') et que "mettreEnMaj" est vrai comme avant, alors tu crées une string à partir de ce caractère. (String s = new String(c) ). Ensuite string s2 = s.toUpperCase; fait que s2 contient maintenant une lettre majuscule. Tu n'as qu'à remplacer le ième élément de ton tableau par s2.charAt(0).


sinon, tu fais comme avant la vérification : si c est un espace alors mettre le drapeau à true.
0
popo15 Messages postés 57 Date d'inscription jeudi 24 avril 2008 Statut Membre Dernière intervention 29 novembre 2009
29 nov. 2009 à 20:43
Ok compris. Merci bien pour tes explication.

Bonne soirée.
Cordialement.
popo15
0
description.replaceFirst(".",(description.charAt(0)+"").toUpperCase())
0
mimihh Messages postés 27 Date d'inscription samedi 31 décembre 2011 Statut Membre Dernière intervention 8 février 2014
Modifié par mimihh le 13/04/2013 à 03:09
bonsoir je veux ecirire un programme java capable de reconnaitre les mots composés d'un texte donné. En fait il faut faire une comparaison entre ce texte et un glossaire donné. quelqu'un peut m'aider?? Merci
0
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 660
18 mai 2013 à 13:53
postez un nouveau sujet, la question n'est pas la même qu'ici
0