Partage
  • Partager sur Facebook
  • Partager sur Twitter

Probleme au niveau Des chaines de caractere String

    29 novembre 2020 à 11:42:58

    bonsoir,
    j'aimerais savoir comment demander a l'utilisateur de saisir uniquement une chaine de caractère numérique cet a dire une chaine de caractère composer que des chiffre par exemple: "1234" a chaque fois que l'utilisateur saisie une autre chaine qui est non numerique que sa soit une boucle.Au niveau de mon code je me suis bloquer a ce niveau voici mon code si dessous:

    import java.util.Scanner;
     
    public class TestChaines {
    	static Scanner clavier = new Scanner(System.in);
     
    	public static void main(String[] args) {
    		/* question n°1 */
    		int variable = 12345;
    		String s = String.valueOf(variable);
    		System.out.println("chaine de caractère " + s);
    		/* question n°2 */
    		char teste1 = 48;
    		char teste2 = 57;
    		// System.out.println(teste1);
    		System.out.println("Saisissez une chaine de caractère composée de chiffres ");
    		String chaine = clavier.nextLine();
     
    		if (chaine == null) {
    			System.out.println("vous n'avez rien saisie");
    		} else {
     
    			int i = 0;
    			while (chaine.charAt(i) >= teste1 && chaine.charAt(i) <= teste2 && i < chaine.length()) {
    				i++;
    			}
    			if (i >= chaine.length()) {
    				System.out.println("vous venez de saisir une chaine de caractere numerique");
    			}
     
    		}
     
    	}
    }



    -
    Edité par AddaIssaAbdoulRazak 29 novembre 2020 à 11:43:43

    • Partager sur Facebook
    • Partager sur Twitter
      29 novembre 2020 à 13:55:20

      bonjour,

      par une expression régulière , tu peux valider qu'un string est un nombre.

      "12345".matches("\\d+"); // true
      "1w".matches("\\d+"); // false
      "plq".matches("\\d+"); // false


      Ensuite dans une boucle infinie ( while avec pour condition true) tu peux recueillir la chaîne saisie par l'utilisateur , ensuite faire un break quand la chaîne n'est pas un nombre.

      -
      Edité par armel.mc 29 novembre 2020 à 13:55:42

      • Partager sur Facebook
      • Partager sur Twitter
        29 novembre 2020 à 20:15:16

        bonsoir,

        est-il possible de me le détaillé a travers un exemple de code concret

        merci d'avance...

        • Partager sur Facebook
        • Partager sur Twitter
          30 novembre 2020 à 6:37:17

          Commence par réaménager ton code en écrivant une méthode estNumerique(String chaine)

          Sinon, pour DEMANDER de taper une chaîne numérique, c'est

          System.out.println("Entrez un nombre svp");

          -
          Edité par michelbillaud 30 novembre 2020 à 6:39:13

          • Partager sur Facebook
          • Partager sur Twitter
            6 décembre 2020 à 0:49:50

            j'ai tester ceci  mais ça pas marcher aussi

            import static java.lang.System.out;
            
            import java.util.Scanner;
            
            public class TestChaines {
            	static Scanner clavier = new Scanner(System.in);
            
            	public static void main(String[] args) {
            		/* question n°1 */
            		int variable = 12345;
            		String s = String.valueOf(variable);
            		System.out.println("chaine de caractère " + s);
            		/* question n°2 */
            		checkValeurNumerique();
            
            	}
            
            	private static void checkValeurNumerique() {
            		out.println("Veuillez saisir une chaine de caractere composer uniquement que des chiffre");
            		String entree = clavier.nextLine();
            		if (entree.isEmpty()) {
            			out.println("la chaine de caractere saisie en entrer est vide!!!");
            			entree.toLowerCase();
            			for (int index = 0; index < entree.length(); index++) {
            				final boolean estValeurNumerique = entree.charAt(index) >= 48 && entree.charAt(index) <= 57;
            				if (estValeurNumerique) {
            					out.println("Vous avez saisi la valeur numérique : " + entree);
            					break;
            				} else {
            					out.println("Vous devez absolument saisir une chaîne de caractères composée de chiffres !!!");
            					entree = clavier.nextLine();
            					if (estValeurNumerique)
            						;
            				}
            			} // for
            
            		}
            	}
            }
            



            • Partager sur Facebook
            • Partager sur Twitter
              6 décembre 2020 à 8:37:25

              Bonjour,

              Plutôt que de réinventer la roue, voici une méthode simple et propre en utilisant les fonctionnalité standard de Java

              public static int lireEntier(Scanner sc, String msgIntro, String msgErreur) {
                  int valeur;
                  boolean erreur;
                  do {
                      System.out.print(msgErreur);
                      // On lit la réponse sous forme de chaine
                      String reponse = sc.nextLine();
                      erreur = false;
                      try {
                          // On essaye d'interpréter (parse) la chaine comme un entier
                          valeur = Integer.parseInt(reponse);
                          // Si ce n'est pas un entier, parseInt envoie une exception
                          // On l'attrape
                      } catch (NumberFormatException ex) {
                          System.out.println(msgErreur);
                          erreur = true;
                      }
                  } while (erreur);
                  return valeur;
              }

                Et tu l'utilises comme ça

              Scanner sc = new Scanner();
              int age = lireEntier(sc, "Entrez l'âge du capitaine : ", "L'âge doit être un nombre entier.");

              -
              Edité par brubru777 6 décembre 2020 à 8:49:48

              • Partager sur Facebook
              • Partager sur Twitter

              Probleme au niveau Des chaines de caractere String

              × 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