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 :

Besoin d'aide pour trier un tableau dans l'ordre croissant et décroissant


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2017
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2017
    Messages : 16
    Par défaut Besoin d'aide pour trier un tableau dans l'ordre croissant et décroissant
    Bonjour, j'ai besoin d'aide pour un exercice java. Dans ce dernier, je dois générer un tableau d'entiers aléatoires entre -100 et 100. Ensuite je dois les trier dans l'ordre croissant et décroissant avec un booléen. Ce que je n'arrive pas à faire pour l'instant c'est trier le tableau aléatoire généré. Voici mon code actuel et merci pour votre aide.
    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
    package Exercice26;
     
    import javax.swing.JOptionPane;
     
    import java.awt.List;
    import java.lang.reflect.Array;
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.Collections;
     
    public class Exercice26 {
    	public static void main(String[] args) {
     
    		final int NB_REPETITION = 10;// initialisation du nombre de répétitions
    		int tab[] = new int[NB_REPETITION];// initialisation du tableau
    		int i;
    		int lower = -100;
    		int higher = 100;
    		String valeursAleatoires = "";
     
    		for (i = 0; i < NB_REPETITION; i++) {// boucle
    			tab[i] = (int) (Math.random() * (higher - lower)) + lower; // renvoi au chiffre aléatoire
    			valeursAleatoires = valeursAleatoires + tab[i] + " | ";
     
    		}
    		JOptionPane.showMessageDialog(null, " " + valeursAleatoires, "Tableau", JOptionPane.INFORMATION_MESSAGE);//afficher le random entre -100 et 100
    		int valeursAleatoiresInt = Integer.valueOf(valeursAleatoires);//conversion du string valeursaleatoires en integer
    		int array[] = new int [valeursAleatoiresInt];//initialisation du tableau array avec le random valeursaleatoires
    		Arrays.sort(array);//trier le tableau
     
    		JOptionPane.showMessageDialog(null, " " + array, "Tableau", JOptionPane.INFORMATION_MESSAGE);//afficher le tableau trié
    	}
    }

  2. #2
    Membre chevronné
    Avatar de provirus
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2009
    Messages
    248
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2009
    Messages : 248
    Par défaut
    Bonjour,

    Il y a plusieurs problèmes avec le code:

    L'un d'eux est que vous mettez les valeurs aléations dans un String. Si c'est pour afficher à la fin en texte, vous devriez faire cela à la fin (une fois que vous avez trié)

    Aussi,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int array[] = new int [valeursAleatoiresInt];//initialisation du tableau array avec le random valeursaleatoires
    Cela ne copie pas le contenu de valeursAleatoiresInt, mais crée un tableau vide d'une taille valeursAleatoiresInt.
    Arrays.copyOf() ferait cela.

    Suggestion:
    • Créez vos nombres aléatoires dans un int[]
    • Triez avec Array.sort
    • Placez dans un String (utilisez un StringBuilder)


    Bonne chance

  3. #3
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2017
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2017
    Messages : 16
    Par défaut
    Citation Envoyé par provirus Voir le message
    Bonjour,

    Il y a plusieurs problèmes avec le code:

    L'un d'eux est que vous mettez les valeurs aléations dans un String. Si c'est pour afficher à la fin en texte, vous devriez faire cela à la fin (une fois que vous avez trié)

    Aussi,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int array[] = new int [valeursAleatoiresInt];//initialisation du tableau array avec le random valeursaleatoires
    Cela ne copie pas le contenu de valeursAleatoiresInt, mais crée un tableau vide d'une taille valeursAleatoiresInt.
    Arrays.copyOf() ferait cela.

    Suggestion:
    • Créez vos nombres aléatoires dans un int[]
    • Triez avec Array.sort
    • Placez dans un String (utilisez un StringBuilder)


    Bonne chance
    Je comprends ton explication mais le premier problème que je rencontre avec ta solution, c'est que je n'arrive pas à générer un tableau aléatoire en mettant mon valeursAleatoires en integer dès le départ. Mon debugger me propose directement de le convertir en string pour pouvoir générer un tableau d'entiers aléatoires

  4. #4
    Membre chevronné
    Avatar de provirus
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2009
    Messages
    248
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2009
    Messages : 248
    Par défaut
    Voici ce que je veux dire:

    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
     
    package Exercice26;
     
    import java.util.Arrays;
     
    import javax.swing.JOptionPane;
     
    public class Exercice26 {
        public static void main(String[] args) {
     
            final int NB_REPETITION = 10;// initialisation du nombre de répétitions
            int tab[] = new int[NB_REPETITION];// initialisation du tableau
            int i;
            int lower = -100;
            int higher = 100;
            String valeursAleatoires = "";
     
            // Générer les nombres dans tab[]
            for (i = 0; i < NB_REPETITION; i++) {// boucle
                tab[i] = (int) (Math.random() * (higher - lower)) + lower; // renvoi au chiffre aléatoire
            }
     
            // Trié en ordre ascendant
            Arrays.sort(tab);
     
            // Mettre dans un text
            StringBuilder contenu = new StringBuilder();
            for (i = 0; i < NB_REPETITION; i++) {
                contenu.append(tab[i]).append(" | ");
            }
            valeursAleatoires = contenu.toString();
     
            JOptionPane.showMessageDialog(null, " " + valeursAleatoires, "Tableau", JOptionPane.INFORMATION_MESSAGE);// afficher le random entre -100 et 100
        }
    }

  5. #5
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2017
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2017
    Messages : 16
    Par défaut
    Citation Envoyé par provirus Voir le message
    Voici ce que je veux dire:

    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
     
    package Exercice26;
     
    import java.util.Arrays;
     
    import javax.swing.JOptionPane;
     
    public class Exercice26 {
        public static void main(String[] args) {
     
            final int NB_REPETITION = 10;// initialisation du nombre de répétitions
            int tab[] = new int[NB_REPETITION];// initialisation du tableau
            int i;
            int lower = -100;
            int higher = 100;
            String valeursAleatoires = "";
     
            // Générer les nombres dans tab[]
            for (i = 0; i < NB_REPETITION; i++) {// boucle
                tab[i] = (int) (Math.random() * (higher - lower)) + lower; // renvoi au chiffre aléatoire
            }
     
            // Trié en ordre ascendant
            Arrays.sort(tab);
     
            // Mettre dans un text
            StringBuilder contenu = new StringBuilder();
            for (i = 0; i < NB_REPETITION; i++) {
                contenu.append(tab[i]).append(" | ");
            }
            valeursAleatoires = contenu.toString();
     
            JOptionPane.showMessageDialog(null, " " + valeursAleatoires, "Tableau", JOptionPane.INFORMATION_MESSAGE);// afficher le random entre -100 et 100
        }
    }
    Merci beaucoup pour ton aide, je vais décortiquer tout ça pour ne plus avoir besoin d'aide la prochaine fois. Encore merci !

  6. #6
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2017
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2017
    Messages : 16
    Par défaut
    une dernière question, le array.sort trie par ordre croissant. Avec cette solution, comment trier par ordre décroissant ? j'ai testé en remplacant "sort" par "reverse" mais ça me met un message d'erreur

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 07/12/2015, 15h17
  2. Réponses: 4
    Dernier message: 27/05/2010, 10h07
  3. Besoin d'aide pour afficher du text dans un applet
    Par argon dans le forum Applets
    Réponses: 2
    Dernier message: 15/01/2006, 22h53
  4. Réponses: 3
    Dernier message: 05/12/2005, 03h30
  5. besoin d'aide pour intégrer une entité dans un MCD
    Par barkleyfr dans le forum Schéma
    Réponses: 17
    Dernier message: 13/10/2005, 14h29

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