Partage
  • Partager sur Facebook
  • Partager sur Twitter

question sur string.length et saisie

'\n' et saisie.length();

Sujet résolu
    18 novembre 2010 à 14:41:46

    bonjour à tous et happy birthday Les zeros,
    je débute en java (grand débutant même), et j'ai problème assez étrange bref je ne trouve aucune solution c'est pourquoi je viens vous solliciter , voila je me suis créer une classe Clavier qui test la validité des entiers float ect..saisies et renvoie un message approprié quand la saisie n'est pas bonne, bref le problème est que la saisie enregistrée + le '\n' (enter) est égal à la saisie.. voici un bout du code qui expliquera mieux que ne pourrais le faire mon problème..

    while ((carac=(char) System.in.read()) !='\n') saisie = saisie + carac;
                     entier=Integer.parseInt(saisie); <couleur nom="bleugris">// devrait etre entier=Integer.parseInt(saisie.substring(0, saisie.length() - 1));
                     System.out.println(saisie.length());//me renvoie bien la longueur de ma saisie..quid du '\n'?
    


    pour apporter quelques précisions je suis sous linux, et j'ai commencer à soupçonner openJDK que j'ai remplacer par la version sun, idem.. si quelqu'un a une idée je suis preneur.
    • Partager sur Facebook
    • Partager sur Twitter
      18 novembre 2010 à 15:40:03

      Je ne comprend pas trop ton problème. Donc je récapitule.
      Tu veux compter en plus des caractèrès saisis le caractères '\n' ?

      Si c'est le cas, reformule ta boucle, parce que tel qu'elle est écrite, tu ne pourras jamais chopper le '\n'

      J'opterai pour un :
      char carac;
      do {
      carac=(char) System.in.read());
      saisie = saisie + carac;
      } 
      while (carac!='\n');
      
      • Partager sur Facebook
      • Partager sur Twitter
      J'ai tous les badges d'OpenClassrooms.
        18 novembre 2010 à 15:48:32

        salut merci pour ta réponse, non en fait j'etait persuadé que pour faire le test sur '\n' il fallait bien qu'il soit lu donc que la condition devenait vraie seulement après son entrée dans la chaine, d'oû mon envie de l'éliminer avec entier=Integer.parseInt(saisie.substring(0, saisie.length() - 1));


        • Partager sur Facebook
        • Partager sur Twitter
          18 novembre 2010 à 15:54:36

          Et je n'ai toujours pas compris ton problème, peux-tu être plus explicite ?

          EDIT: bon ben je vois que ton sujet est résolu (ces derniers temps je regarde un peu trop vite :D ). Mais je te conseille de réediter ton message pour mieux expliquer ton problème au cas ou quelqu'un d'autre tomberai dessus.
          • Partager sur Facebook
          • Partager sur Twitter
          J'ai tous les badges d'OpenClassrooms.
            18 novembre 2010 à 16:08:01

            Pout tout te dire j'utilise ce fichier lireClavier depuis quelques temps et je n'ai jamais eu de soucis avec, mais j'ai envoyé un projet à un pote qui m'a dit que chez lui ça plantait à cause du lireClavier, mon problème finalement c'est que chez moi ça marche et chez lui, sans la modif ( eliminer le dernier caractère de saisie ) sa plante et vis versa (chez moi cette modif ne marche pas..et pour cause) enfin ça me parait logique que mettant la condition avant la concaténation le '\n' n'y entre jamais; il m'avait mit le doute. Enfin chez moi ça compile est ça marche, j'ai même recompilé et tester sur un mac pareil c'est ok, je ne comprends pas ce qui se passe chez lui.je m'en vais donc lui renvoyer la balle; de toutes façon merci pour ta réponse rapide.
            • Partager sur Facebook
            • Partager sur Twitter
              18 novembre 2010 à 16:16:49

              salut,
              le caractère de fin de ligne n'est pas un caractère standard. utilise plutôt :
              System.getProperty("line.separator");

              Bonne chance
              • Partager sur Facebook
              • Partager sur Twitter

              question sur string.length et saisie

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown