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

Eclipse Discussion :

Utilisation de la console pour lire et écrire, chaînes de caractères


Sujet :

Eclipse

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2021
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 20
    Localisation : Autre

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2021
    Messages : 46
    Points : 25
    Points
    25
    Par défaut Utilisation de la console pour lire et écrire, chaînes de caractères
    Bonjour,

    Merci d'avance.

    J'ai écrit le programme suivant qui permet de lire une ligne à la 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
    import java.io.*;
     
    public class LireConsole {
     
    	public static void main(String[] args) throws IOException {
    		// Get set up to read lines of text from the user
    		BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
    		System.out.println("Taper le texte à encoder... quit pour quitter");
    		for(;;){ // Boucle sans fin
    			System.out.print("> "); // affiche le prompt
    			String line = in.readLine(); // ligne une ligne
    			if ((line == null) || line.equals("quit")) // Si EOF ou "quit" alors...
    				break; // ... quitter la boucle
    			edition(line);
    		}
    	}
    	public static void edition(String line){
     
    	}
    }

    Maintenant je souhaite éditer cette ligne en séparant chaque caractère par une barre verticale « | ». C’est l’objectif de la méthode edition(String line);
    Pour écrire cette méthode, je dispose dans la classe String de deux méthodes intéressantes : la méthode charAt() et la méthode length()

    Je cherche dans la documentation ces deux méthodes et les utiliser pour lire caractère par caractère la chaîne line.

    Je dois éditer alors chaque caractère précédé du caractère « | » dans la méthode edition().

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Taper le texte à encoder... quit pour quitter 
    > texte à traiter
     
    texte encodé > |t|e|x|t|e|  |à|  |t|r|a|i|t|e|r
    >

  2. #2
    Membre éprouvé
    Homme Profil pro
    Administrateur Systèmes, Clouds et Réseaux /CAO/DAO/Ingénierie Electrotechnique
    Inscrit en
    Décembre 2014
    Messages
    448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur Systèmes, Clouds et Réseaux /CAO/DAO/Ingénierie Electrotechnique

    Informations forums :
    Inscription : Décembre 2014
    Messages : 448
    Points : 990
    Points
    990
    Par défaut
    Techniquement une string est une sorte de tableau de caractères (je schématise), du moment que tu mets une boucle dessus tu peux sortir tous les caractères que tu veux. De fait une méthode très simple serait de passer chaque caractère dans une autre string en ajoutant chaque fois un caractère pipeline, sauf pour le dernier caractère. Il y a peut être plus élégant.

    edit:
    exemple barbare mais qui fait le job

    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
     
    import java.util.Scanner;    // Needed for Scanner class
     
    public class Main
    {
        public static void main(String[] args) {
     
            String s;
            String output="";
     
            // Create a Scanner object to read input.
            Scanner console = new Scanner(System.in);
     
            // Enter sentence
            System.out.print("Enter sentence");
            s = console.nextLine();
     
            // Loop to modify sentence
            for(int i=0; i<s.length()-1;i++)
            {
                output+=s.charAt(i)+ "|";
            }
     
            // get the last character
            output +=s.charAt(s.length()-1);
     
            // Show result
            System.out.print(output);
        }
    }

    Erratum: mal lu la consigne, c'est encore plus simple... Le code au dessus ne met des pipelines qu'à l'intérieur, le code en dessous met des pipelines devant chaque caractère.
    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
     
     
    import java.util.Scanner;    // Needed for Scanner class
     
     
    public class Main
    {
        public static void main(String[] args) {
     
            String s;
            String output="";
     
            // Create a Scanner object to read input.
            Scanner console = new Scanner(System.in);
     
            // Enter sentence
            System.out.print("Enter sentence");
            s = console.nextLine();
     
            // Loop to modify sentence
            for(int i=0; i<s.length();i++)
            {
                output+= "|" +s.charAt(i);
            }
     
     
            // Show result
            System.out.print(output);
        }
    }

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2021
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 20
    Localisation : Autre

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2021
    Messages : 46
    Points : 25
    Points
    25
    Par défaut
    Merci beaucoup

    À présent je souhaite réaliser une édition codée. C’est à dire que chaque lettre de l’alphabet lu doit être codée et éditée par la procédure d’édition.

    J'ai essayé d’utiliser la méthode Rot13 qui substitue à chaque lettre de l’alphabet latin (les autres, les blancs ou autres caractères de ponctuation ne sont pas modifiés) par la même lettre « tournée » de 13 places dans l’alphabet.

    Par exemple le « a » est remplacé par « n », le « p » est remplacé par « c » …

    Puisque l'alphabet Latin a 26 lettres, cette méthode encode et décode également ! J'aimerais bien le vérifier.

    Par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Taper le texte à encoder... quit pour quitter 
     
    > texte à coder!
     
    texte encodé >grkgr à pbqre! <------ (texte encodé)
     
    > grkgr à pbqre!
     
    texte encodé >texte à coder! <------ (texte encodé une deuxième fois... donc décodé
     
    > quit

  4. #4
    Membre éprouvé
    Homme Profil pro
    Administrateur Systèmes, Clouds et Réseaux /CAO/DAO/Ingénierie Electrotechnique
    Inscrit en
    Décembre 2014
    Messages
    448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur Systèmes, Clouds et Réseaux /CAO/DAO/Ingénierie Electrotechnique

    Informations forums :
    Inscription : Décembre 2014
    Messages : 448
    Points : 990
    Points
    990
    Par défaut
    Salut,

    je te réponds par rapport à ton PM mais j'ai peur que ça ne te rende pas service, donc je vais juste te donner une piste. Puisque tu as simplement l'alphabet à substituer ça veut dire que ça va être ton référent, de là il suffit de parcourir chaque caractère, de vérifier s'il doit être traité, de prendre sa position et enfin de procéder à la substitution.

    C'est faisable avec des fonctions basiques, selon le texte on pourra rajouter en plus la gestion des majuscules, tout dépend de l'exercice demandé.

    Pour le reste à toi de jouer

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2021
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 20
    Localisation : Autre

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2021
    Messages : 46
    Points : 25
    Points
    25
    Par défaut
    Salut, voici ce que j'ai essayé.

    Pourriez-vous m'aider à le peaufiner s'il vous plaît.

    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
    55
    package part1;
    import java.io.*;
    public class partie2 {
        public static void main(String[] args) throws IOException {
    		BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
     
    		System.out.println("Taper le texte à encoder... quit pour quitter");
     
    		for(;;){
    			String reponse="";
    			System.out.print("> "); 
    			String line = in.readLine(); 
    			if ((line == null) || line.equals("quit"))
    				break;  
                for(int i=0;i<line.length();i++){
                    reponse+=Rot13(line.charAt(i));
                }
    			System.out.println("Texte encodé : "+line+" > "+reponse+"\n");
    		}
    	}
        public static char Rot13(char c){
    		int dev; 
     
                if ((65 <= c & c <= 90) || (97 <= c & c <= 122)) {
                    if (c + 13 > 90 & c <= 90) {
                        dev = 90 - c + 1;
                        dev = 13 - dev;
                        c = (char) (65 + dev);
     
                    } else if (c <= 90) {
                        c = (char) (c + 13);
     
                    }
                    if (c + 13 > 122 & c <= 122) {
                        dev = 122 - c + 1;
                        dev = 13 - dev;
                        c = (char) (97 + dev);
     
                    } else if (97 <= c & c <= 122) {
                        c = (char) (c + 13);
     
                    }
     
                } else {
                    if(c==' ')
                        c=' ';
     
                }
     
            return c;
     
        }
     
     
    }

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2021
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 20
    Localisation : Autre

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2021
    Messages : 46
    Points : 25
    Points
    25
    Par défaut

Discussions similaires

  1. Réponses: 5
    Dernier message: 10/05/2008, 17h26
  2. [Zip] PHP pour lire et écrire a partir de .ZIP ?
    Par Fatjo dans le forum Bibliothèques et frameworks
    Réponses: 18
    Dernier message: 30/10/2007, 17h04
  3. Réponses: 7
    Dernier message: 26/05/2007, 15h14
  4. Utiliser un userform pour lire et écrire dans une feuille de calculs
    Par sebi78 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 02/04/2007, 19h51
  5. Réponses: 9
    Dernier message: 05/04/2005, 09h39

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