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 :

Comment déterminer en Java , qu'un nombre est un palindrome


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Analyste IP + Programmation
    Inscrit en
    Février 2016
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyste IP + Programmation
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2016
    Messages : 59
    Par défaut Comment déterminer en Java , qu'un nombre est un palindrome
    Bonjour,

    Je suis présentement un cours de programmation de base en java...

    Dans mon laboratoire, où j'ai 3 exercices à faire dont un que j'ai de la misère...

    Mes connaissances de programmations sont encore à leur balbutiement...

    Un palindrome est pour commencer un nombre symétrique pour ceux qui ne savent pas...

    Exemple : 34143 (car il se lit dans les deux sens)

    J'ai trouvé une façon de faire par la méthode modulo ...

    Ma question !!!!!!!!!!! : Comment je peux mettre dans variable_1 le caractère 1 et 2 et dans variable_2 le caractère 4 et 5 ?

    Nous n'avons pas vue encore les tableaux, nous avons vue les if, switch, for, do while..etc...

    Merci

  2. #2
    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 : 55
    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
    Billets dans le blog
    2
    Par défaut
    Salut,

    Il n'existe pas de moyen de créer des variables dynamiquement. Et pouvoir faire quelque chose de similaire, il faudrait passer forcément par quelque chose qui ressemble à un tableau, ou qui utilise un tableau, à moins d'utiliser liste chainée, qui nécessite de faire une classe, mais je suppose que si tu n'as pas encore vu les tableaux, tu n'as pas encore vu les classes...

    Pour le problème initial, il y a au moins deux méthodes :
    • transformer le nombre en chaine de caractères, et faire une boucle pour comparer les caractères de 0 à n/2 exclu aux caractère de n-1 à n/2 exclu (ce sera le plus rapide à mon avis).
    • directement sur les chiffres avec ta méthode des modulos (et des divisions entières je suppose) avec une boucle similiaire : ainsi, inutile de stocker les chiffres du nombre dans des variables
    • eventuellement le faire en 2 passes : une passe qui inverse le nombre (par modulos, divisions entières, et additions et multiplications), puis comparer (ce qui revient globalement au cas précédent, mais plus simple à relire à priori).
    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.

  3. #3
    Membre confirmé
    Homme Profil pro
    Analyste IP + Programmation
    Inscrit en
    Février 2016
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyste IP + Programmation
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2016
    Messages : 59
    Par défaut Merci pour l'indice du modulo....
    Bonjour,

    Je me présente, je suis étudiant à temps partiel de soir à UQAM (Au Québec)

    Enfin je n'ai pas encore vue les tableaux, mais j'ai vue recament les méthodes que je vais bientôt mettre en pratique dans quelques exercices...

    Dans le cadre de mon cours, j'utilise BlueJ que j'aime déjà beaucoup...

    Voici ma solution avec le modulo :


    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
    import java.util.Scanner ;
    public class exercice_3 
    {   
        public static void main (String[] args) 
        {
           Scanner clavier = new Scanner(System.in);
           int palindrome, position_1, position_2,position_4,position_5;
     
           do
           {         
               System.out.println("Veuillez entrer un nombre entre 10000 et 99999");
               System.out.println("Afin de terminer si c'est un palindrome");
               palindrome = clavier.nextInt();
     
               while ((palindrome < 10000) || (palindrome > 99999 ))
               {
                   System.out.println("Veuillez entrer un nombre de 5 chiffre entre 10000 et 99999");
                   palindrome = clavier.nextInt();
               }
     
               position_1 = (palindrome / 10000) ; // On stock le 1er chiffre du nombre
               position_2 = ((palindrome / 1000) % 10) ; // On stock le 2e chiffre du nombre de la division 1000 avec modulo 10
               position_4 = ((palindrome / 10) % 10) ; // On stock le 4e chiffre du nombre de la division 10 avec modulo 10
               position_5 = (palindrome % 10) ; // On stock le 5e chiffre du nombre avec modulo 10
     
               if ((position_1 == position_5) && (position_2 == position_4))
               {
                   System.out.println("Le nombre : " + palindrome + " est bel et bien un palindrome !");
               }
                    else 
                    {
                        System.out.println("Le nombre : " + palindrome + " n'est pas un palindrome !");
                    }                
           }  while (palindrome != 99999);
           System.out.println("Fin du programme");
        }

    Voilà

  4. #4
    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 : 55
    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
    Billets dans le blog
    2
    Par défaut
    Voilà une solution, sans tableau, sur des int, et qui fonctionne quelque soit le nombre de chiffres (dans les limites d'un int bien sûr) :


    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
    public class Palindrome {
     
    	private static final Scanner KEYBOARD = new Scanner(System.in);
     
    	public static void main(String[] args) {
     
    		for (boolean run = true; run;) {
    			System.out.println("Veuillez entrer un nombre(positif compris entre 0 et "+Integer.MAX_VALUE+" inclus) (ou entrée pour finir) :");
    			System.out.println("Afin de terminer si c'est un palindrome");
     
    			if (KEYBOARD.hasNextInt()) {
    				final int input = KEYBOARD.nextInt();
    				if ( input<0 ) {
    					System.out.println("Votre saisie n'est pas un int positif...");
    				}
    				else {
    					int nombre = 0;
    					if ( input!=0 ) {
    						for( int nb=input; nb>0; nb/=10 ) {
    							nombre = (nombre*10)+ nb%10;
    						}
    					}
    					if (nombre==input) {
    						System.out.println(input + " est un palindrome");
    					} else {
    						System.out.println(input + " n'est pas un palindrome");
    					}
    					System.out.println();
    				}
     
    				KEYBOARD.nextLine();
    			} else {
    				String input = KEYBOARD.nextLine();
    				if (input.isEmpty()) {
    					run = false;
    					System.out.println("Au revoir...");
    				} else {
    					System.out.println("Votre saisie n'est pas un int...");
    				}
     
    			}
    		}
     
    	}
     
    }



    Une autre qui fait le traitement sur chaîne de caractères :

    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
     
     
     
    import java.util.Scanner;
     
    public class Palindrome {
     
    	private static final Scanner KEYBOARD = new Scanner(System.in);
     
    	public static void main(String[] args) {
     
    		for(boolean run=true; run;) {
    	           System.out.println("Veuillez entrer un nombre (ou entrée pour finir) :");
    	           System.out.println("Afin de terminer si c'est un palindrome");
    	           String input = KEYBOARD.nextLine();
    	           if ( input.isEmpty() ) {
    	        	   run=false;
    		           System.out.println("Au revoir...");
    	           }
    	           else {
    	        	   input = input.trim();
    	        	   if ( !input.matches("\\d+") ) {
    					System.out.println("Votre saisie n'est pas un nombre...");
    					System.out.println();
    				} else {
    					final int n = input.length() / 2;
    					boolean palindrome = true;
    					for (int i = 0; i < n; i++) {
    						if (input.charAt(i) != input.charAt(input.length() - 1 - i)) {
    							palindrome = false;
    							break;
    						}
    					}
    					if (palindrome) {
    						System.out.println(input + " est un palindrome");
    					} else {
    						System.out.println(input + " n'est pas un palindrome");
    					}
    					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.

  5. #5
    Modérateur
    Avatar de Gugelhupf
    Homme Profil pro
    Analyste Programmeur
    Inscrit en
    Décembre 2011
    Messages
    1 326
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste Programmeur

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 326
    Billets dans le blog
    12
    Par défaut
    Ma petite implémentation du palindrome :
    Code Java : 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
    public static boolean isPalindrome(String chain){
        // if(chain == null)
     
        int length = chain.length();
        if(length == 0) {
            return true;   
        }
     
        for(int i = 0, middle = length / 2; i<middle; i++){
            if(chain.charAt(i) != chain.charAt(length - 1 - i)){
                return false;
            }
        }
     
        return true;
    }

    Si tu fais ça avec un nombre, converti d'abord ton entier en String avec String#valueOf(int)
    N'hésitez pas à consulter la FAQ Java, lire les cours et tutoriels Java, et à poser vos questions sur les forums d'entraide Java

    Ma page Developpez | Mon profil Linkedin | Vous souhaitez me contacter ? Contacter Gokan EKINCI

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

Discussions similaires

  1. Comment déterminer la parité d'un nombre
    Par DelphiCool dans le forum Codes sources à télécharger
    Réponses: 10
    Dernier message: 08/02/2013, 17h07
  2. Réponses: 8
    Dernier message: 22/06/2008, 08h12
  3. Réponses: 5
    Dernier message: 24/04/2007, 11h17
  4. Comment déterminer si un .class est un nombre ?
    Par kisame dans le forum Langage
    Réponses: 9
    Dernier message: 10/04/2006, 14h14
  5. Comment déterminer si un composant est d'un type "TMonT
    Par DanielR dans le forum C++Builder
    Réponses: 2
    Dernier message: 20/03/2004, 18h22

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