IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Souci majuscule/minuscule avec ASCII + suppression de certains caractères


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur Java
    Inscrit en
    Août 2015
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2015
    Messages : 19
    Par défaut Souci majuscule/minuscule avec ASCII + suppression de certains caractères
    Bonjour à tous, chers confrères !

    Je viens à vous parce que je débute en programmation Java sous Eclipse, cela fait tout juste une semaine que j'ai commencé dans mon entreprise, et l'un de mes exercices consiste à : "Ecrire une fonction qui a en paramètre une chaine de caractères et qui transforme toutes les minuscules de la chaine en majuscules."

    PRECISION IMPORTANTE /!\
    : comme vous pouvez le voir, .toUpperCase() est en commentaire. Pourquoi ? Parce que je n'ai pas le droit de l'utiliser *meurs*
    Je dois impérativement utiliser le code ASCII pour convertir les lettres.

    Bawé, sinon c'est trop simple :derp:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    package exercice1;
     
    import java.util.Scanner;
     
    public class Exercice1 {
     
     
    	public static void main(String args[]){
     
    		String phrase;
    		Scanner sc = new Scanner(System.in);
    		System.out.println("Entrez votre chaine de caractères ici.");
    		phrase = sc.nextLine();
     
    		for(int k = 0; k<phrase.length(); k++){
    			if(phrase.charAt(k)>'a' && phrase.charAt(k)<'z'){ 
    				phrase += ((char)(phrase.charAt(k)-32));
    				System.out.println(phrase);
    			}
     
     
     
    		}
     
    		/*phrase = phrase.toUpperCase();*/
     
     
     
     
     
    		/*Exercice 2
    		 * Ecrire une fonction qui a en paramètre une chaine de caractères et qui supprime toutes les voyelles.*/
     
    		String suppression = "0/";
     
    		char [] voyelle = {'a','e','i','o','u'};
    		String lettre = new String(voyelle);
     
    		for(int i = 0; i < phrase.length(); i++){
    			if(phrase.charAt(i) != 'a' && phrase.charAt(i) != 'e' && phrase.charAt(i) != 'i' 
    					&& phrase.charAt(i) != 'o' && phrase.charAt(i) != 'u'){
    				suppression += phrase.charAt(i) ;
     
    			}
     
    			System.out.println(phrase);
    		}
     
    	}
     
    }
    Alors, oui. L'exercice 2, vous avez l'énoncé directement en commentaire dans le code, inutile que je le remarque, je pense que vous savez lire o/
    Je suis bloqué, ça fait trois jours que je suis dessus, j'ai fait d'autres exercices pendant ce temps, mais là je reviens dessus, j'ai un petit peu progressé, but now I need some help D:

    Voici ce que j'ai dans ma console :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    Entrez votre chaine de caractères ici.
    j'en ai marre
    j'en ai marreJ
    j'en ai marreJE
    j'en ai marreJEN
    j'en ai marreJENI
    j'en ai marreJENIM
    j'en ai marreJENIMR
    j'en ai marreJENIMRR
    j'en ai marreJENIMRRE
    j'en ai marreJENIMRRE
    j'en ai marreJENIMRRE
    j'en ai marreJENIMRRE
    j'en ai marreJENIMRRE
    j'en ai marreJENIMRRE
    j'en ai marreJENIMRRE
    j'en ai marreJENIMRRE
    j'en ai marreJENIMRRE
    j'en ai marreJENIMRRE
    j'en ai marreJENIMRRE
    j'en ai marreJENIMRRE
    j'en ai marreJENIMRRE
    j'en ai marreJENIMRRE
    j'en ai marreJENIMRRE
    j'en ai marreJENIMRRE
    j'en ai marreJENIMRRE
    j'en ai marreJENIMRRE
    j'en ai marreJENIMRRE
    j'en ai marreJENIMRRE
    j'en ai marreJENIMRRE
    j'en ai marreJENIMRRE
    Hmm.. Faut pas croire ce qui est marqué hein, en vrai, je suis juste à bout mais je VEUX trouver la solution à mes problèmes de codage !

    Merci à vous par avance, n'hésitez pas à poser vos questions, je regarderais toutes les heures (ou presque) si j'ai des réponses x'D

    Shidate Kunan~

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Salut,

    Pour le premier problème :

    • Tu traites tous les caractères entre a et z, non inclus, parce que les comparaisons sont strictes. Il faut inclure a et z dans l'intervalle : c>='a' && c<='z'
    • Utilise une autre variable String pour construire la nouvelle chaine. Dans l'exemple ci-après, j'utilise une String : il vaudrait mieux utiliser un StringBuilder, mais tu verras ça quand tu seras plus avancer (dans un exercice qui fait changer la casse par le code ASCII, on peut se le permettre — à noter qu'il existe une méthode Character.toUpperCase(char), qui permet de le faire, sans passer donc par String.toUpperCase()).
    • Ensuite, tu concatènes les caractères compris en a et z (donc les minuscules) mais pas les autres : donc tu te retrouves avec une phrase "partielle".


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    String nouvellePhrase = ""; // normalement, il vaudrait mieux utiliser un StringBuilder
    for(int k = 0; k<phrase.length(); k++){
       char c = phrase.charAt(k);
       if(c>='a' && c<='z'){ 
          nouvellePhrase += (char)(c-32);
       }
       else {
          nouvellePhrase += c;
       }
    }
    phrase = nouvellePhrase;
    System.out.println(phrase);
    Ensuite, pour le second problème :

    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre averti
    Homme Profil pro
    Développeur Java
    Inscrit en
    Août 2015
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2015
    Messages : 19
    Par défaut
    Salut Joel, et merci pour ta réponse très complète et rapide !

    Voici mon code désormais modifié et, je le pense, correct (du moins, j'obtiens ce que je désire dans ma console héhéhé)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    package exercice1;
     
    import java.util.Scanner;
     
    public class Exercice1 {
     
    	/*Exercice 1
    	 *Ecrire une fonction qui a en paramètre une chaine de caractères et qui transforme toutes les minuscules de la
    	chaine en majuscules. */
     
    	public static void main(String args[]){
     
    		String phrase;
    		String nouvellePhrase = ""; //utilisation d'un StringBuilder à la place ?
     
    		Scanner sc = new Scanner(System.in);
    		System.out.println("Entrez votre chaine de caractères ici.");
    		phrase = sc.nextLine();
     
    		for(int k = 0; k<phrase.length(); k++){
    			char c = phrase.charAt(k);
    			if(c>='a' && c<='z'){      //note : avant j'avais mis : if(phrase.charAt(k)>='a' && phrase.charAt(k)<='z')
    				nouvellePhrase += (char)(c-32);
     
    			}
    			else {
    				nouvellePhrase += c;
    			}
    		}
     
    		phrase = nouvellePhrase;
    		System.out.println(phrase);
     
     
     
    		/*Exercice 2
    		 * Ecrire une fonction qui a en paramètre une chaine de caractères et qui supprime toutes les voyelles.*/
     
    		String suppression = "";
     
    		String lettre = "AEIOU";
     
    		for(int i = 0; i < phrase.length(); i++){
    			if(lettre.indexOf(phrase.charAt(i))<0){
    				suppression += phrase.charAt(i);
    			}
     
    		}
     
    		System.out.println(suppression);
     
    	}
     
    }
    Et voici donc ce que m'affiche ma console :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Entrez votre chaine de caractères ici.
    Messaigneurs les poulpeux de la Frime en guenille !
    MESSAIGNEURS LES POULPEUX DE LA FRIME EN GUENILLE !
    MSSGNRS LS PLPX D L FRM N GNLL !
    Parfait !
    Merci encore pour l'aide apportée, je sais où aller désormais si je galère trop longtemps hahaha
    Promis, on me reverra dans les parages :3

    Cordialement,
    Shidate Kunan~

    PS : impossible de me mettre un avatar, pourtant la taille et les dimensions sont respectés... Pourquoi ? :derp:

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 18/12/2011, 15h12
  2. distinction majuscule minuscule avec "event.keyCode"
    Par gselles dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 19/04/2009, 18h06
  3. Suppression de certains caractères dans une chaine
    Par Tchupacabra dans le forum Langage
    Réponses: 2
    Dernier message: 05/12/2007, 12h08
  4. Réponses: 2
    Dernier message: 18/02/2007, 01h47
  5. Réponses: 2
    Dernier message: 13/02/2007, 11h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo