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 :

demande d'explication sur un raisonement


Sujet :

avec Java

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2004
    Messages
    96
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 96
    Points : 58
    Points
    58
    Par défaut demande d'explication sur un raisonement
    j'ai fais un code pour trier des mots saisies au clavier dans l'ordre alphabétique
    je l'ai commpléter avec un code que j'ai trouver dans mon livre pour utiliser la methode CompareTo()
    Voilà le 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
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
     
    import java.util.Scanner;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
     
    import javax.crypto.spec.OAEPParameterSpec;
    import javax.swing.text.StyledEditorKit.BoldAction;
     
    public class TriDeMots 
    {
      public TriDeMots() 
      {
    	  int nombre = 0;
    	  String mots[];
    	  System.out.print("Combien de mots ? ");
    	  Scanner s;// = new Scanner(System.in);
    	  boolean isInt;
    	  do{
    		   isInt=true;
    		    s = new Scanner(System.in);
    	       try{
    		        nombre = s.nextInt();
    	          }catch(Exception e)
    	                {
    	    	           System.out.print("Veuillez saisir un entier : ");
    	                   isInt =false;
    	                }
    	     }while(isInt!=true);
     
    	   mots = new String[nombre];
    	   System.out.println("voulez saisir les "+nombre+" Mots SVP :");
    	   for(int i=0;i<nombre;i++)
    	   {
    		   System.out.print("Le "+i+1+" mot :");
    		   mots[i] = s.next();
    	   }
     
    	   String motMins [] = new String[nombre]; 
    	   for(int i=0;i<nombre ; i++)
    	   {
    		   motMins[i] = mots[i].toLowerCase();
    	   }
     
    	   for(int i=0;i<nombre ; i++)
    	   {
    		   System.out.println(motMins[i]);
    	   }
    	   // tri par reorganisation des references (mots d'origine et en minuscules)
    	   // (on compare chaque mot (minuscule) a tous ses suivants)
    	   String temp;
    	   for (int i=0 ; i<nombre-1 ; i++)
    	        {  
    		      for (int j=i+1 ; j<nombre ; j++)  // je fais un decalage entre les i et le j(i+1) pour comparer les reference .
    		           {
    		              if (motMins[i].compareTo(motMins[j]) >= 0)
    		                {
    		        	      temp = motMins[i] ; 
    		        	      motMins[i] = motMins[j] ;
    		        	      motMins[j] = temp ;
    		                  temp = mots[i] ;
    		                  mots[i] = mots[j] ;
    		                  mots[j] = temp ;
    		                }
    		          }
    	         }
     
    	   System.out.println ("Liste par ordre alphabetique :") ;
    	   for (int i=0 ; i<nombre ; i++) 
    	   System.out.println (mots[i]) ; 
     
    	}
     
     
    }
    mais la partie que j'ai récupéré du livre
    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
     
    String temp;
    	   for (int i=0 ; i<nombre-1 ; i++)
    	        {  
    		      for (int j=i+1 ; j<nombre ; j++)  // je fais un decalage entre les i et le j(i+1) pour comparer les reference .
    		           {
    		              if (motMins[i].compareTo(motMins[j]) >= 0)
    		                {
    		        	      temp = motMins[i] ; 
    		        	      motMins[i] = motMins[j] ;
    		        	      motMins[j] = temp ;
    		                  temp = mots[i] ;
    		                  mots[i] = mots[j] ;
    		                  mots[j] = temp ;
    		                }
    		          }
    	         }
    je ne comprends pas ce raisonement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     temp = motMins[i] ; 
    		        	      motMins[i] = motMins[j] ;
    		        	      motMins[j] = temp ;
    		                  temp = mots[i] ;
    si qu'un peut m'éclairé un peut c'est trop floww!!

  2. #2
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Points : 13 670
    Points
    13 670
    Par défaut
    Bah il échange la valeur de motMins[i] avec celle motMins[j] et donc forcément il faut une variable temp pour ne pas écraser une valeur...
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

  3. #3
    Membre du Club
    Inscrit en
    Septembre 2004
    Messages
    96
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 96
    Points : 58
    Points
    58
    Par défaut
    ça j'ai compris le temp pour n'esp pas écraser mais pkoi il fait il fait l'change des valeurs si la valeur de retour est =>0
    mot1.CompareTo(mot2) =>0
    veut dire que le mot2 suit le mot1 dans l'ordre alpahbétique d'aprés l'aide
    sur CompareTo()

  4. #4
    Membre du Club
    Inscrit en
    Septembre 2004
    Messages
    96
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 96
    Points : 58
    Points
    58
    Par défaut
    je crois que c'est plutôt le contraire :
    mot1.Compare(mot2) => 0
    donne que le mot2 arrive avant le mot1 dans l'ordre alphabétique
    autant pour moi alors , comme je comptrends mieu mon code

  5. #5
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 073
    Points : 7 977
    Points
    7 977
    Par défaut
    Citation Envoyé par Robin56 Voir le message
    Bah il échange la valeur de motMins[i] avec celle motMins[j] et donc forcément il faut une variable temp pour ne pas écraser une valeur...
    J'ajouterai un cas particulier pour tout ce qui est chiffre, (pas des string evidement ca n'ira jamais on est d'accord pas toujours besoin d'avoir un stockage temporaire... mais bon c'est chiloulou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    {
        x -= y;
        y += x;      
        x = (y - x); 
    }
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Rédacteur
    Avatar de bulbo
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2004
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2004
    Messages : 1 259
    Points : 1 937
    Points
    1 937
    Par défaut
    Citation Envoyé par wax78 Voir le message
    J'ajouterai un cas particulier pour tout ce qui est chiffre, (pas des string evidement ca n'ira jamais on est d'accord pas toujours besoin d'avoir un stockage temporaire... mais bon c'est chiloulou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    {
        x -= y;
        y += x;      
        x = (y - x); 
    }
    Surtout qu'avec des chiffres supérieurs à la moitié du max possible pour le type de nombre ça ne marche plus .. c'est à dire qu'il est impossible de faire ça avec des bytes par exemple dés qu'on va avoir des valeurs à classer au dessus de 64

    En gros ça veut dire que pour ne pas utiliser une variable temporaire, on met les données numériques (toutes) dans des conteneurs bien trop gros pour elles.
    Ca revient à avoir X variables temporaires en mémoire, X étant la taille de la liste à trier.

    C'est même plus que chiloulou quoique cela puisse pouvoir signifier

    Bulbo
    [Java] [NetBeans] [CVS]
    La FAQ Java
    Merci de ne pas me poser de questions techniques par MP.

  7. #7
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 073
    Points : 7 977
    Points
    7 977
    Par défaut
    je traduirai chiloulou par "tirer par les cheveux". Mais sinon tu n'as pas tort dutout j'aurai dut eviter cet exemple.
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. Demande d explication sur protocole FTP
    Par Mr_Chut dans le forum Réseau
    Réponses: 1
    Dernier message: 04/05/2007, 18h47
  2. Réponses: 4
    Dernier message: 09/10/2006, 22h12
  3. Réponses: 3
    Dernier message: 27/09/2006, 13h11
  4. [C#] demande d'explication sur un sample msdn
    Par legillou dans le forum Windows Forms
    Réponses: 2
    Dernier message: 27/06/2006, 17h01
  5. [final]demande d'explication sur ce mot-clé
    Par Invité dans le forum Langage
    Réponses: 10
    Dernier message: 18/04/2006, 11h32

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