A voir également:
- Caractere vide
- Caractère ascii - Guide
- Caractere speciaux - Guide
- Caractère spéciaux - Guide
- Espace insécable Word : comment insérer des espaces incassables - Guide
- Supprimer page word vide - Guide
4 réponses
KX
Messages postés
16754
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
14 déc. 2011 à 12:58
14 déc. 2011 à 12:58
Tu peux regarder indexOf, si ça te renvoie -1 c'est que le caractère n'est pas dans la chaîne.
KX
Messages postés
16754
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
14 déc. 2011 à 13:14
14 déc. 2011 à 13:14
Si j'ai bien compris cela devrait être :
if (mot.indexOf(lettreMot3)==-1)
Effectivement, cela me semble très correct et très logique ...
... mais ça ne marche pas .. !
snif merci quand même
... mais ça ne marche pas .. !
snif merci quand même
KX
Messages postés
16754
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
14 déc. 2011 à 13:33
14 déc. 2011 à 13:33
Montre nous ton code de manière à voir ce qui ne va pas, et ré-explique aussi ce que tu veux faire avec quelques exemples représentatif (ceux qui marchent, ceux qui ne marchent pas, ceux qui ne marchent pas mais qui devraient marcher ...)
Enoncé : Remplacer, sauf si ils sont suivis par une voyelle ou 1, 2 ou 4 :
- an par 1
- am par 1
- en par 1
- em par 1
Conctat : Tout marche nickel, les deux lettres se remplacent bien à chaque fois , SAUF lorsque le mot écrit se TERMINE par "an" , "am" , "en" , "em".
Dans ce cas là, les lettres ne sont pas remplcé par 1 , comme cela devrait être !
Code :
Merci.
- an par 1
- am par 1
- en par 1
- em par 1
Conctat : Tout marche nickel, les deux lettres se remplacent bien à chaque fois , SAUF lorsque le mot écrit se TERMINE par "an" , "am" , "en" , "em".
Dans ce cas là, les lettres ne sont pas remplcé par 1 , comme cela devrait être !
Code :
public static void main(String[] args) { String mot = Clavier.lireString(); int longueur = mot.length(); for (int i = 0 ; i < longueur -2 ; i++) { char lettreMot = mot.charAt(i); char lettreMot2 = mot.charAt(i+1); char lettreMot3 = mot.charAt(i+2); if ( lettreMot == 'a' || lettreMot == 'e' ) { if ( lettreMot2 == 'm' || lettreMot2 == 'n' ) { if ( lettreMot3 != 'a' && lettreMot3 != 'e' && lettreMot3 != 'i' && lettreMot3 != 'o' && lettreMot3 != 'u' && lettreMot3 != 'y' && lettreMot3 != '1' && lettreMot3 != '2' && lettreMot3 != '4' || mot.indexOf(lettreMot3) == -1 ) { StringBuffer motDeTravail; motDeTravail = new StringBuffer(mot); motDeTravail.replace (i, i+2, "1"); mot = new String(motDeTravail); longueur = mot.length(); } } } System.out.println(mot); }
Merci.
KX
Messages postés
16754
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
Modifié par KX le 14/12/2011 à 14:06
Modifié par KX le 14/12/2011 à 14:06
Tu peux peut-être gérer ce dernier cas comme ceci :
Quelque chose de bizarre dans ton code c'est ton motDeTravail... tu peux faire directement
for (int i = 0 ; i <= longueur-2 ; i++) // inférieur ou égal { // si lettreMot3 est après le dernier caractère on lui affecte arbitrairement un caractère dont on est sûr qu'il sera remplacé par l'algorithme char lettreMot3 = (i==longueur-2) ? '¤' : mot.charAt(i+2);
Quelque chose de bizarre dans ton code c'est ton motDeTravail... tu peux faire directement
mot = mot.replace(i,i+2,"1");
En ce qui concerne le "motDeTravail" qui est un StringBuffer, cela marche très bien , mais ça n'aurait pas fonctionné avec un mot.replace dans ce cas là car cela est dans un IF et cette syntaxe ne s'occupe pas d'éventuelles conditions.
(c'est le but justement de mon TP).
Par contre, pour ta syntaxe avec le la'interrogation, cela me parait un peu bizarre ..
(c'est le but justement de mon TP).
Par contre, pour ta syntaxe avec le la'interrogation, cela me parait un peu bizarre ..
KX
Messages postés
16754
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
14 déc. 2011 à 20:18
14 déc. 2011 à 20:18
La syntaxe avec un point d'interrogation s'appelle un opérateur ternaire.
Ces deux codes sont identiques :
Ces deux codes sont identiques :
char lettreMot3 = (i==longueur-2) ? '¤' : mot.charAt(i+2); char lettreMot3; if (i==longueur-2) lettreMot3 = '¤'; else lettreMot3 = mot.charAt(i+2);