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 :

Résultat bizarre


Sujet :

avec Java

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 684
    Points : 147
    Points
    147
    Par défaut Résultat bizarre
    Bonjour,
    j'ai écrit ce programme qui doit trier en ordre de croissant le tableau
    mais ce dernier donne une output bizarre comme dessus:

    Entrez le nb d'élément:
    3
    Saissisez les nombres:1
    7
    Saissisez les nombres:2
    9
    Saissisez les nombres:3
    2
    [I@397dea61
    [I@397dea61

    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
     
    import java.util.Scanner;
    public class test 
    { 
    	 public static void main(String[] args)
    	 {
    	  Scanner sc=new Scanner(System.in);
    	  System.out.println("Entrez le nb d'élément:");
    	  int n=sc.nextInt();
    	  int tab[]=new int [n];
    	  for(int i=0;i<n;i++)
    	  {
    		  System.out.println("Saissisez les nombres:"+(i+1));
    		  tab[i]=sc.nextInt();
    		  //System.out.print(TriTableau(tab,n));
    	  }
    	  TriTableau(tab,n);  
         }
     
    	 public static int[] TriTableau(int[]tab, int n)
    	{
    	  int posmini,temp;
    	  for(int i=0;i<n-1;i++)
    	  {
    		  posmini=i;
    		  for(int j=i+1;j<n-1;j++)
    		  {
    			 if(tab[j]<tab[posmini])
    			 {
    				 posmini=j;
    			 }
    		  }
    		  temp=tab[posmini]=tab[i];
    		  tab[i]=temp;
    		  System.out.println(tab);
    	  }
    		return tab;
    		//System.out.println(tab);
    	}
    }
    veuillez m'aidez svp

  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
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Il n'y a rien de bizarre : tu affiches ta variable tab avec System.out.println(tab);. La méthode println(Object) utilise la méthode toString() de l'objet passé en argument pour déterminer la chaîne à afficher. Or la méthode toString() d'un tableau n'affiche pas le tableau (on pourrait débattre de pouquoi, mais c'est une autre histoire), mais une chaine qui correspond en gros à sa référence en mémoire (et une indication que c'est un tableau, ici).

    Pour afficher ton tableau, faire System.out.println( Arrays.toString(tab) );

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 684
    Points : 147
    Points
    147
    Par défaut
    merci pour votre aide
    j'ai corrigé maintenant mon output est suivant:
    Entrez le nb d'élément:
    3
    Saissisez les nombres:1
    5
    Saissisez les nombres:2
    2
    Saissisez les nombres:3
    3
    [5, 5, 3]
    [5, 5, 3]

    il prend pas compte deuxième élément 2
    et il s'affiche 2 fois le résultat


    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
     
    import java.util.Arrays;
    import java.util.Scanner;
    public class Test1 
    {
    	public static void main(String[] args) 
    	{
    			  Scanner sc=new Scanner(System.in);
    			  System.out.println("Entrez le nb d'élément:");
    			  int n=sc.nextInt();
    			  int tab[]=new int [n];
    			  for(int i=0;i<n;i++)
    			  {
    				  System.out.println("Saissisez les nombres:"+(i+1));
    				  tab[i]=sc.nextInt();
    			  }
    			  TriTableau(tab,n);  
    		     }
     
    			 public static int[] TriTableau(int[]tab, int n)
    			{
    			  int posmini,temp;
    			  for(int i=0;i<n-1;i++)
    			  {
    				  posmini=i;
    				  for(int j=i+1;j<n-1;j++)
    				  {
    					 if(tab[j]<tab[posmini])
    					 {
    						 posmini=j;
    					 }
    				  }
    				  temp=tab[posmini]=tab[i];
    				  tab[i]=temp;
    				  System.out.println( Arrays.toString(tab) );
    			  }
    				return tab;
    			}
    		}
    merci vos aides

  4. #4
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 085
    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 085
    Points : 8 004
    Points
    8 004
    Par défaut
    Normal, tu passes 3 a a ta fonction contenant la boucle de calcul et l'affichage. Cette boucle contenant l'affichage, boucle 3-1 (n-1) donc tu obtiens 2 affichages...

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 684
    Points : 147
    Points
    147
    Par défaut
    bonjour,
    je l'ai corrigé,mais dans l'output, après avoir trier les nombres entier il s'affiche avec des crochets [ ] ,
    [2, 5, 9]
    comment les éliminer svp?

    Entrez le nb d'élément:
    3
    Saissisez les nombres:1
    9
    Saissisez les nombres:2
    2
    Saissisez les nombres:3
    5
    [2, 5, 9]

    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
     
    import java.util.Arrays;
    import java.util.Scanner;
    public class Voyelles
    {
      public static void main(String[] args) 
      {
        Scanner sc=new Scanner(System.in);
        System.out.println("Entrez le nb d'élément:");
        int n=sc.nextInt();
        int tab[]=new int [n];
        for(int i=0;i<n;i++)
        {
          System.out.println("Saissisez les nombres:"+(i+1));
          tab[i]=sc.nextInt();
        }
        TriTableau(tab,n);  
       }
     
       public static int[] TriTableau(int[]tab, int n)
       {
         int posmini,temp;
         for(int i=0;i<n;i++)
         {
           posmini=i;
           for(int j=i+1;j<n;j++)				  
           {
    	  if(tab[j]<tab[posmini])
    	  {
    	    posmini=j;
    	  }
           }
           temp=tab[posmini];
           tab[posmini]=tab[i];
           tab[i]=temp;
          }
          System.out.println( Arrays.toString(tab) ); 
          return tab;
         }
     }

  6. #6
    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
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    C'est l'affichage standard d'un tableau : si tu veux ton propre affichage, il faut le programmer ! Faire une boucle (for, foreach) avec un boolean pour afficher la virgule, utiliser un Stream/Collecors.joining en Java 8, ou supprimer les [ ] de la chaîne obtenue par Arrays.toString() (par substring).

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 684
    Points : 147
    Points
    147
    Par défaut
    merci beaucoup
    vos aides m'étaient très utiles

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

Discussions similaires

  1. Résultat bizarre d'une requête
    Par yesil08 dans le forum Bases de données
    Réponses: 19
    Dernier message: 07/05/2008, 18h18
  2. Résultat bizarre d'une fonction numérique simple
    Par feynman dans le forum Fortran
    Réponses: 9
    Dernier message: 19/11/2007, 23h07
  3. [MySQL] Résultat bizarre pour une requête
    Par masseur dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 09/05/2007, 12h46
  4. conversion vers l'hexa et résultat bizarre
    Par sanatou dans le forum C
    Réponses: 16
    Dernier message: 04/01/2007, 09h39
  5. [VBA-E] format date/mois en entier : résultat bizarre
    Par illight dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 04/07/2006, 16h05

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