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

Collection et Stream Java Discussion :

[Débutant] connaître le max d'une valeur dans un tableau à deux dimensions


Sujet :

Collection et Stream Java

  1. #1
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut [Débutant] connaître le max d'une valeur dans un tableau à deux dimensions
    Bonsoir tout le monde,

    J'aimerais savoir quel est la valeur la plus grande dans un tableau à deux dimensions.


    Pour cela, j'ai créé le tableau en question, j'ai créé quelques variables :

    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
    public class MaximumTableau2Dimensions 
    {
    	public static void main (String[] args)
    	{
    		int tableau [][] = new int [5][5];
    		int maximum = 0;
     
     
    		for (int i = 0; i < tableau.length; i++)
    		{
    			for (int j=0; j < tableau.length; j++)
    			{
    				tableau[i][j] = (int) (Math.random()*20+1);
    			}
    		}
     
    		for (int i=0; i < tableau.length; i++ )
    		{
    			for (int j=0; j < tableau.length; j++)
    			{
    				System.out.print(tableau[i][j] + " ");
    			}
     
    		}
     
    		System.out.println();
     
     
     
     
    		for (int i=0; i < tableau.length; i++ )
    		{
    		if (tableau[i] > maximum )
     
    			maximum = tableau[i];
     
     
    			for (int j=0; j < tableau.length; j++)
    			{
    					if (tableau[j] > maxium)
    					maximum = tableau[j];
     
    		}
    		}
     
    		System.out.println();
     
    		//System.out.println("Le maximum vaux :" + maximum);
    	}
    }
    le problème vient de cette partie du 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
    for (int i=0; i < tableau.length; i++ )
    		{
    		if (tableau[i] > maximum )
     
    			maximum = tableau[i];
     
     
    			for (int j=0; j < tableau.length; j++)
    			{
    					if (tableau[j] > maxium)
    					maximum = tableau[j];
     
    		}
    		}
    Voici les messages d'erreur :

    operator > cannot be applied to int[].int
    incompatible types
    cannot resolve symbol variable maximum
    incompatible types
    Qu'en pensez-vous ?

    Merci d'avance pour vortre aide.

    beegees

  2. #2
    Membre chevronné
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Points : 1 787
    Points
    1 787
    Par défaut
    D'abord ta condition d'arrêt de la boucle sur j imbriquée n'est pas correcte (là ça fonctionne parce que ton tableau est "carré").
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    for (int j=0;j<tableau[i].length;j++)
    est plus correct.

    Deuxièmement, pour trouver le plus grand entier, tu dois parcourir toutes les cases du tableau, soit tous les tableau[i][j] en refaisant deux boucles imbriquées.

    Bon courage !

  3. #3
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Merci pour ta réponse,

    est-ce normal que tu mettes un i dans les j ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for (int j=0;j<tableau[i].length;j++)
    Je continue à chercher.

    Merci encore.

    beegees

  4. #4
    Membre chevronné
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Points : 1 787
    Points
    1 787
    Par défaut
    Euh .. là je suis quand même étonné par ta question. A regarder un tutoriel sur les tableaux à plusieurs dimensions à mon avis ce n'est pas très clair dans ta tête ....

  5. #5
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Re-bonjour,

    Après avoir cherché pas mal de temps, je pense avoir trouvé une solution, pourriez-vous me dire si celle-ci vous semble correcte ?

    En tout cas le résultat est là:

    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
    for (int i=0; i < tableau.length; i++ )
    		{
    			for (int j=0; j < tableau.length; j++)
    			{
     
    				if (tableau[i][j] > maximum)
    				maximum = tableau[i][j];
     
    		}
    		}
     
    		System.out.println();
     
    		System.out.println("Le maximum vaut" + maximum);
     
    		//System.out.println("Le maximum vaux :" + maximum);
    Merci d'avance pour votre aide.

    beegees

  6. #6
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Citation Envoyé par chtig
    Euh .. là je suis quand même étonné par ta question. A regarder un tutoriel sur les tableaux à plusieurs dimensions à mon avis ce n'est pas très clair dans ta tête ....
    Tout à fait, ça n'est pas très claire dans ma tête.

    Je dois avouer que c'est la première fois que je vois ta méthode, pourrais-tu regarder ce que j'ai fais ?

    Merci
    beegees

  7. #7
    Membre chevronné
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Points : 1 787
    Points
    1 787
    Par défaut
    Dans la section que tu donnes, on ne voit pas l'initialisation de maximum, mais je suppose que tu le fait. Attention à la valeur que tu mets, une bonne idée est de prendre tableau[0][0].
    Sinon, reste toujours la condition d'arrêt de ta deuxième boucle qui doit utiliser tableau[i].length pour être propre (et fonctionner dans tous les cas de tableaux).
    Mais là ça va fonctionner...

  8. #8
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Re-bonjour,

    Dans la section que tu donnes, on ne voit pas l'initialisation de maximum, mais je suppose que tu le fait.
    Dans mon premier message, on peut voire que j'ai mis :

    à la valeur que tu mets, une bonne idée est de prendre tableau[0][0].
    Je ne comprends pas bien ce que tu veux dire par là ?

    Il faut que je mette tableau[0][0] au lieu de tableau[i][j] ?

    Sinon, reste toujours la condition d'arrêt de ta deuxième boucle qui doit utiliser tableau[i].length pour être propre (et fonctionner dans tous les cas de tableaux).
    Là j'ai quand même une question, si i est inférieur à j, tout va s'arrêter avant que j soit terminer ?

    Disons qu'on est 2 valeurs dans i et 3 dans j

    i: 2,3
    j: 1,2,5

    si on lance la boucle jusque i soit terminé, et qu'on cherche le maximum, on va trouvé que 3 est le plus grand mais on va pas s'occuper de 5 ?

    Merci pour tes explications !

    beegees

  9. #9
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Points : 5 943
    Points
    5 943
    Par défaut
    Citation Envoyé par beegees
    Il faut que je mette tableau[0][0] au lieu de tableau[i][j] ?
    Non, chtig parlait de la valeur d'initialisation de ton maximum. Tu donne 0 comme valeur par défaut, mais si ton tableau ne contient que des nombre négatifs, alors ça ne collera pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int maximum = tableau[0][0];
    Citation Envoyé par beegees
    Citation Envoyé par chtig
    Sinon, reste toujours la condition d'arrêt de ta deuxième boucle qui doit utiliser tableau[i].length pour être propre (et fonctionner dans tous les cas de tableaux).
    Là j'ai quand même une question, si i est inférieur à j, tout va s'arrêter avant que j soit terminer ?

    Disons qu'on est 2 valeurs dans i et 3 dans j

    i: 2,3
    j: 1,2,5

    si on lance la boucle jusque i soit terminé, et qu'on cherche le maximum, on va trouvé que 3 est le plus grand mais on va pas s'occuper de 5 ?
    Tu n'as visiblement pas compris comment fonctionnent les tableaux multidimensionnels.
    Ton i sert à parcourir les "éléments" de la première dimension, dont le nombre est renvoyé par tableau.length.
    A chaque "élément" de la première dimension correspond une à deuxième dimension.
    Ton j sert à parcourir les éléments de la seconde dimension correspondant à la première dimension désignée par i (d'où le tableau[i].length).

    Je suis pas sûr d'être clair .

    Voici un code pour illustré :
    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
     
    // Parcours de la première dimension
    for(int i = 0; i < tableau.length; i ++) {
     
        // On récupère la deuxième dimension correspondant
        // à la première dimension en cours
        int[] deuxiemeDimension = tableau[i];
     
        // Parcours de la deuxième dimension correspondant
        // à la première dimension en cours
        for(int j = 0; j < deuxiemeDimension.length; j ++) {
            // calcul maximum
            if(deuxiemeDimension[j] > maximum) {
                maximum = deuxiemeDimension[j];
            }
        }
    }
    }
    Maintenant remplace deuxiemeDimension par tableau[i] et le tour est joué.
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  10. #10
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Bonjour le y@m's,

    Merci pour ta réponse qui m'a permis de comprendre l'utilisation des tableaux à deux dimensions.

    Passe une très bonne soirée.

    beegees

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

Discussions similaires

  1. [Débutant] Appli avec attribution d'une valeur dans un label
    Par outofspace dans le forum Développement iOS
    Réponses: 3
    Dernier message: 16/09/2014, 22h54
  2. Connaître l'index d'une valeur dans un tableau
    Par chok371 dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 26/01/2011, 19h41
  3. Réponses: 4
    Dernier message: 29/06/2006, 15h50
  4. Rechercher une valeur dans un tableau
    Par pafi76 dans le forum Access
    Réponses: 2
    Dernier message: 29/06/2006, 14h23
  5. Réponses: 21
    Dernier message: 28/02/2006, 15h23

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