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 :

Tabulation et retour à la ligne


Sujet :

avec Java

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 63
    Points : 50
    Points
    50
    Par défaut Tabulation et retour à la ligne
    Bonjour je dois écrire un code affichant les 30 premiers chiffres avec un retour à la ligne tous les 4 chiffres en utilisant i%4, la tabulation et le retour à la ligne.
    En gros je voudrais avoir
    1 2 3 4
    5 6 7 8
    Avec mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    int i=1;
    		while (i<31){
    		System.out.println(i);
    		if (i%4 != 0) {System.out.println((char) 9);}
    		else {System.out.println((char) 13);}
     
    		i++;
    j'obtiens
    1

    2

    3

    4

    5

    6

    etc

    quelqu'un aurait une explication ?
    Merci

  2. #2
    Membre chevronné

    Homme Profil pro
    développeur
    Inscrit en
    Octobre 2013
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : développeur

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 576
    Points : 1 989
    Points
    1 989
    Par défaut
    Bonjour,
    Je ne suis pas expert mais, dans System.out.println(i), println fait un saut de ligne sur la prochaine chaîne affichée alors que System.out.print affiche côte-à-côte, donc dès le départ avant même de tester, tu fais déja sauter de ligne ton entier. Ton code, je l'aurais fait comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    int i=1;
    while (i<31) {
       if (i%4 == 0) {
          System.out.println(i); 
       } else { 
           System.out.print(i);
       } 
        i++;
    }
    Je ne sais pas si ça fonctionne. Dis-moi ce que ça te retourne.

  3. #3
    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 : 54
    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
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Oui, c'est çà, @JB122. Manque juste la tabulation.

    Au final, je verrais ça (avec un for, vu qu'on parcourt un intervalle discret fini, et ça évite d'avoir une variable technique qui traine en dehors du bloc, accessoirement) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    for(int i=1; i<31; i++) {
       System.out.print(i);
       if (i%4 != 0) {
          System.out.print('\t');
       }
       else {
          System.out.println();
       }
    }
    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.

  4. #4
    Membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 63
    Points : 50
    Points
    50
    Par défaut
    Bonjour,

    vos solutions marchent, merci. Pour ce qui est du while c'est imposé dans l'ennoncé tout comme le fait de devoir "afficher" un caractère tab et retour chariot.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {System.out.println((char) 9);}
    Quand je fais ça , ça me fait bien une tabulation
    Par contre si je fais ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {System.out.println((char) 13);}
    je n'ai pas de retour à la ligne.

    Le 9 et 13 viennent de la table ASCII mais je ne suis pas tout à fait sûr que ça marche comme ça.

  5. #5
    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 : 54
    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
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Le caractère '\t' est le même caractère que tu obtiens quand tu fais (char)9, mais c'est tout de même plus lisible. Et il s'agit bien du caractère tabulation : il devrait convenir à ton énoncé.

    De même le caractère '\r' est l'équivalent de (char)13, et '\n', de (char)10. '\r' s'appelle "Carriage Return" ou "Retour Chariot", et '\n' "line feed".

    Sur Windows, pour passer à la ligne (faire un "new line"), il faut accoler les 2 caractères : "\r\n". Sur linux, il faut '\n' pour passer à la ligne, '\r', permettant de revenir au début de la ligne courante.

    C'est pourquoi un println() est mieux pour éviter de se poser la question s'il faut "\r\n" ou "\n".

    Les méthodes println() sont équivalentes aux méthodes print() correspondantes, mais ajoutent un "new line" à la fin.

    System.out.println((char)13); fait donc un retour chariot, puis un newline (donc sur Windows c'est comme si tu faisais System.out.print("\r\r\n");
    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.

  6. #6
    Membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 63
    Points : 50
    Points
    50
    Par défaut
    Merci

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

Discussions similaires

  1. [XSLT] Gestion des espaces, tabulations et retours à la ligne
    Par Pragmateek dans le forum XSL/XSLT/XPATH
    Réponses: 10
    Dernier message: 15/05/2008, 15h47
  2. [RegEx] Supprimer les espaces, tabulations et retour à la ligne
    Par Sayrus dans le forum Langage
    Réponses: 5
    Dernier message: 07/03/2008, 12h21
  3. Tabulations : problème de retour à la ligne
    Par Mattius007 dans le forum Mise en forme
    Réponses: 3
    Dernier message: 05/06/2007, 17h36
  4. Réponses: 4
    Dernier message: 15/03/2007, 11h13
  5. Conserver les retours à la ligne
    Par arwen dans le forum ASP
    Réponses: 2
    Dernier message: 04/12/2003, 12h50

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