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

Java Discussion :

Comment lire plusieurs lignes à l'écran


Sujet :

Java

  1. #21
    Membre chevronné
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Points : 1 984
    Points
    1 984
    Par défaut
    Citation Envoyé par guizaniseifislam Voir le message
    ah oui cà c vrai, je vais la corriger mais n'oublions pas que dans tt les cas le prog quand il arrive à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    choix += sEntreeTampon.readLine();
    de la dernière ligne, qui est vide, reste en attente et ne passe pas pour tester la condition de while
    Non. Depuis le début, tu dis que le fichier se termine par une ligne vide. Donc, lors de la lecture de la derniere ligne, sEntreeTampon.readLine(); va renvoyer une ligne vide. Ce qui fera sortir du while.
    Et dans le cas ou le fichier ne se terminerait pas par une ligne vide, comme le dit la javadoc sur le retour de readLine :
    Citation Envoyé par javadoc
    A String containing the contents of the line, not including any line-termination characters, or null if the end of the stream has been reached
    Bref, ca veut dire que si tu ne concatene pas le string lu par ton reader, ca marche.

  2. #22
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2009
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 119
    Points : 114
    Points
    114
    Par défaut
    bon ma demande est:
    l'utilisateur entre 'd' suivit d'un retour chariot suivit d'une séquence de lignes composées de 9 '0' et '1', terminée par un retour chariot. La séquence est terminée par une ligne vide (contenant uniquement un retour chariot):

    exp:

    d
    011010001
    011001010
    011011000
    011011000
    011011110
    011000101

    ==> après le dernier retour chariot et s'il n y a pas de séquence binaire, démarre mon prog, donc comment je lis tout ça en java pour que je précède après à mon reste du travail?

  3. #23
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2009
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 119
    Points : 114
    Points
    114
    Par défaut
    pour hwoarang:
    Bref, ca veut dire que si tu ne concatene pas le string lu par ton reader, ca marche.
    tjr non malgré que g fait comme vous m'avez dit:
    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
    public static String lectureEcran() {
    		// pour récupérer les données user et les mettre en mémoire
    		InputStreamReader sEntréeIn = new InputStreamReader(System.in);
    		BufferedReader sEntréeTampon = new BufferedReader(sEntréeIn);
     
    		String str ="";
    		String choix = "";
     
    		try {
    			str = sEntréeTampon.readLine();
     
    			while (null != str) {
    				choix += str + '\n';
    				str = sEntréeTampon.readLine();
    			}
     
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
     
    		return choix;
    	}
    je vous donne encore mon besoin :
    -***********-
    Pour décoder une chaîne de caractère, l'utilisateur entre 'd' suivit d'un retour chariot suivit d'une séquence de lignes composées de 9 '0' et '1', terminée par un retour chariot. La séquence est terminée par une ligne vide (contenant uniquement un retour chariot)

    Le programme affiche la chaîne originale terminée par un retour chariot.

    Au fur et à mesure du décodage, trois cas sont possibles :

    cas normal : il n'y a pas d'erreur de parité. Les programme affiche les caractères correctement décodés.
    cas de correction d'erreur : dans un bloc de lignes, la parité est erronée sur exactement une ligne et une colonne. Le bit d'intersection de la ligne et de la colonne est détecté comme faux et est corrigé (inversé) ; le programme affiche les caractères comme si le bit détecté était inversé.
    cas de détection d'erreur : dans un bloc de lignes, la parité est erronée mais d'une autre façon (une seule erreur ou erreur sur deux lignes ou erreur sur deux colonnes ou trois erreurs ou plus). Une erreur non corrigible est détectée. Le programme affiche un retour chariot suivit de "Erreur, message corrompu.".

    Exemple de décodage sans correction

    Entrée :

    d
    011010001
    011001010
    011011000
    011011000
    011011110
    011000101

    Sortie :

    hello
    -***********-

    ==> je veux donc programmer le début de mon exercice qui est la lecture du caractère d et les lignes binaires pour que je passe après à mes tests sur ces valeurs.

  4. #24
    Membre chevronné
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Points : 1 984
    Points
    1 984
    Par défaut
    Comme tu l'as toi meme posté, pour s'arreter sur la ligne vide, la condition du while doit etre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while ((null != str) && (str.length() > 0))

  5. #25
    En attente de confirmation mail
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Novembre 2011
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2011
    Messages : 50
    Points : 40
    Points
    40
    Par défaut
    Citation Envoyé par guizaniseifislam Voir le message
    ==> je veux donc programmer le début de mon exercice qui est la lecture du caractère d et les lignes binaires pour que je passe après à mes tests sur ces valeurs.
    Ce n'est pas ce qui est fait dans le main ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
            System.out.println(sb);
            final StringTokenizer st = new StringTokenizer(sb.toString(), "\n");
     
            // AJOUTER :
            if(st.countTokens()<2) {
                  //traiter aucune saisie valide
            }
            st.next(); // pour sauter le 'd' 
            while(st.hasNext()){
                maFonctionDeVerif(st.next());
            }
    ....

  6. #26
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2009
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 119
    Points : 114
    Points
    114
    Par défaut
    pour hwoarang: j'ai essayé ta condition mais ça fonctionne pas.
    pour cylere: il faut d'abord que j'ai les données saisies à l'écran dans une variable pour que je puisse faire mes tests.

    j'ai mis un fichier joint qui montre les données saisies à l'écran avec un retour chariot à la fin. Maintenant je veux lire toutes ces informations, ma boucle fait ça mais s'arrête de concaténer les lignes binaires à la fin, et c'est ce que je veux, mais le prog ne sort de la boucle et reste coincer à str = sEntréeTampon.readLine();.
    j'ai ajouté une ligne int i =0 juste pour débogger et voir si le prog sort à la fin de la lecture des données ou pas mais c tjr le même prob!
    Fichiers attachés Fichiers attachés

  7. #27
    En attente de confirmation mail
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Novembre 2011
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2011
    Messages : 50
    Points : 40
    Points
    40
    Par défaut
    Citation Envoyé par guizaniseifislam Voir le message
    pour hwoarang: j'ai essayé ta condition mais ça fonctionne pas.
    pour cylere: il faut d'abord que j'ai les données saisies à l'écran dans une variable pour que je puisse faire mes tests.

    j'ai mis un fichier joint qui montre les données saisies à l'écran avec un retour chariot à la fin. Maintenant je veux lire toutes ces informations, ma boucle fait ça mais s'arrête de concaténer les lignes binaires à la fin, et c'est ce que je veux, mais le prog ne sort de la boucle et reste coincer à str = sEntréeTampon.readLine();.
    j'ai ajouté une ligne int i =0 juste pour débogger et voir si le prog sort à la fin de la lecture des données ou pas mais c tjr le même prob!
    tu l'as fait avec ton programme, ou avec celui que j'ai envoyé?

  8. #28
    Membre chevronné
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Points : 1 984
    Points
    1 984
    Par défaut
    Citation Envoyé par guizaniseifislam Voir le message
    pour hwoarang: j'ai essayé ta condition mais ça fonctionne pas.
    Bah moi, quand je teste, ca fonctionne. Poste ton code si tu veux plus d'infos.

  9. #29
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2009
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 119
    Points : 114
    Points
    114
    Par défaut
    pour cylere: c fait avec mon code

    voilà mon code:
    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
    56
    57
    58
    59
    60
    61
    62
    63
    64
    public class decodage1 {
     
    	public static String lectureEcran() {
    		// pour récupérer les données user et les mettre en mémoire
    		InputStreamReader sEntreeIn = new InputStreamReader(System.in);
    		BufferedReader sEntreeTampon = new BufferedReader(sEntréeIn);
     
    		String str ="";
    		String choix = "";
     
    		try {
    			str = sEntreeTampon.readLine();
     
    			while (null != str && (str.length() > 0)) {
    				choix += str + '\n';
    				str = sEntreeTampon.readLine();
    				int i=0;
    			}
     
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
     
    		return choix;
    	}
     
    public static void main(String[] args) {
    		String sEntree = lectureEcran();
    		//String sEntree = "011010001\n011001010\n011011000\n011011000\n";
    		String sLigne = "";
    		String sLgSansBitParite = "";
    		String sBinaire = "";
    		String sChaine = "";
     
    		char sCar;
     
    		int nbBit1_Lg = 0;
    		int nbLg = 0;
    		int nbTotLg = 0;
    		int numLgErronee = -1;
    		int nbLgErronee = 0;
    		int numColErronee = -1;
    		int nbColErronee = 0;
    		int nbBit1_col1 = 0;
    		int nbBit1_col2 = 0;
    		int nbBit1_col3 = 0;
    		int nbBit1_col4 = 0;
    		int nbBit1_col5 = 0;
    		int nbBit1_col6 = 0;
    		int nbBit1_col7 = 0;
    		int nbBit1_col8 = 0;
    		int i = 0;
    		int j = 0;
     
    		// compter le nombre des lignes binaires (qui est le nombre des
    		// caractères)
    		for (i = 0; i < sEntrée.length(); i++) {
    			if (sEntree.charAt(i) == '\n') {
    				nbTotLg++;
    			}
    		}
     
    }
    }
    il se peut que j'ai pas bien expliqué mon besoin, il faut d'abord que l'utilisateur:
    1/ saisie "d" à la 1ere étape et puis tape retour chariot
    2/ saisie les lignes binaires chacune dans une ligne et suivie par retour chariot
    3/ quand il a finit la séquence des lignes binaires, il tape un retour chariot

    ==> je veux maintenant lire toutes ces informations, est ce que je fais une boucle while avec readline() pour lire chaque ligne et quelle sera la condition de sortie dans ce cas, ou bien il y a une autre solution pour récupérer ces info ensembles et après j'utilise StringTokenizer?

    j'ai trouvé le code ci-dessous sur internet : http://www.java-examples.com/read-li...ng-inputstream.
    je l'ai essayé avec:
    "d
    e
    g
    h
    exit
    "
    ==> ça fonctionne quand j'ajoute retour chariot après le exit, sinon la readLine() reste en attente comme ds mon cas!!!
    apparemment la readLine() ne lit pas une ligne vide, non?

    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
        /*
                Read line of characters from console using InputStream
                This example shows how to read a line or string from console window
                using readLine method of BufferedInputStream.
        */
     
        import java.io.BufferedReader;
        //import java.io.IOException;
        import java.io.InputStreamReader;
     
        public class ReadLineFromConsoleExample {
     
                public static void main(String[] args) {
     
                        /*
                         * To read line or string from console use,
                         * readLine method of BufferedReader class.
                         */
     
     
                         BufferedReader br =
                         new BufferedReader(new InputStreamReader(System.in));
     
                         String strLine = null;
     
                         System.out.println("Reading line of characters from console");
                         System.out.println("Enter exit to quit");
     
                         try
                         {
     
                                while( (strLine = br.readLine()) != null)
                                {
                                   if(strLine.equals("exit"))
                                                break;
     
                                   System.out.println("Line entered : "  + strLine);
     
                                }
     
                                br.close();                    
     
                         }
                         catch(Exception e)
                         {
                                System.out.println("Error while reading line from console : " + e);
                         }
                }
        }

  10. #30
    Membre chevronné
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Points : 1 984
    Points
    1 984
    Par défaut
    Citation Envoyé par guizaniseifislam Voir le message
    ==> ça fonctionne quand j'ajoute retour chariot après le exit, sinon la readLine() reste en attente comme ds mon cas!!!
    apparemment la readLine() ne lit pas une ligne vide, non?
    Une petite lecture de la javadoc permet de comprendre comment ca marche. Et comme elle le dit, readLine renvoie une ligne terminée par un retour chariot ou un EOF (en supprimant les caracteres de fin de ligne). Sur stdin, il faut donc terminer la ligne par un retour chariot pour que readline la remonte. Mais si tu tapes directement entrée, ca renvoie bien une ligne vide (et je repete que la condition fonctionne).

  11. #31
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2009
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 119
    Points : 114
    Points
    114
    Par défaut
    Citation Envoyé par hwoarang Voir le message
    il faut donc terminer la ligne par un retour chariot pour que readline la remonte. Mais si tu tapes directement entrée, ca renvoie bien une ligne vide
    mais est ce que le retour chariot n'est pas la touche Entrée?

    pouvez vous me donner ton ptit prog et votre cas de test?

  12. #32
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2009
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 119
    Points : 114
    Points
    114
    Par défaut
    bon je vous remercie tous pour votre aide.
    J'ai résolu mon problème en utilisant de la fonction que j'ai trouvé sur internet
    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
     /*
                Read line of characters from console using InputStream
                This example shows how to read a line or string from console window
                using readLine method of BufferedInputStream.
        */
     
        import java.io.BufferedReader;
        //import java.io.IOException;
        import java.io.InputStreamReader;
     
        public class ReadLineFromConsoleExample {
     
                public static void main(String[] args) {
     
                        /*
                         * To read line or string from console use,
                         * readLine method of BufferedReader class.
                         */
     
     
                         BufferedReader br =
                         new BufferedReader(new InputStreamReader(System.in));
     
                         String strLine = null;
     
                         System.out.println("Reading line of characters from console");
                         System.out.println("Enter exit to quit");
     
                         try
                         {
     
                                while( (strLine = br.readLine()) != null)
                                {
                                   if(strLine.equals("exit"))
                                                break;
     
                                   System.out.println("Line entered : "  + strLine);
     
                                }
     
                                br.close();                    
     
                         }
                         catch(Exception e)
                         {
                                System.out.println("Error while reading line from console : " + e);
                         }
                }
        }

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [VB]Comment lire plusieurs videos simultanément
    Par fablebab dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 12/04/2006, 11h22
  2. lire plusieurs lignes avec fgetc
    Par Mousk dans le forum C
    Réponses: 7
    Dernier message: 25/03/2006, 18h24
  3. Réponses: 5
    Dernier message: 27/02/2006, 09h14
  4. Comment insérer plusieurs lignes en incrémentant la pk ?
    Par PamelaGeek dans le forum Requêtes
    Réponses: 2
    Dernier message: 15/02/2006, 13h39
  5. Comment lire plusieurs lignesd'un fichier ?
    Par BECHE dans le forum Langage
    Réponses: 8
    Dernier message: 06/01/2006, 20h12

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