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épassement limites d'un tableau


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 57
    Par défaut Dépassement limites d'un tableau
    Bonjour,

    J'essaie d'écrire une fonction pour déplacer un élément d'une case de mon tableau vers une autre.

    En fait je voudrais que mon élément se déplace tant que la case précédente est vide, jusqu'à atteindre la limite gauche de mon tableau.
    Mais je n'y arrive pas, déjà mon élément ne se déplace que d'une case à chaque fois et en plus lorsqu'il arrive à la colonne 0 il continue d'avancer

    Est-ce que vous pouvez m'aider svp?

    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
    	// Déplacement vers la gauche
    	public void deplacementG()
    	{
    		char tmp;
     
    		for (int i = 0; i < nbLig; i++)
    		{
    			for (int j = 0; j < nbCol; j++)
    			{
    				if ((j-1) >= 0)
    				{
    					tmp = grille[i][j];
    					grille[i][j] = ' ';
    					grille[i][j-1] = tmp;
    				}
    			}
    		}
    	}

  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,

    La réponse est un peu dans la question :
    Citation Envoyé par Seeverine Voir le message
    En fait je voudrais que mon élément se déplace tant que la case précédente est vide, jusqu'à atteindre la limite gauche de mon tableau.
    Il te faut donc une boucle while(), avec pour condition, un test de la case précédente, pour savoir si elle est vide.

    En gros, en pseudocode :

    Code pseudocode : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    index = index de la colonne de l'élément à déplacer
    tant que la case correspond à index  - 1 est vide et qu'on est pas dans la première colonne à gauche
        index = index - 1
    fin tant que
    si la case de colonne index est vide, alors mettre l'élément dans cette case et vider la case d'origine

    Si tu veux faire le déplacement au fur et à mesure :
    Code pseudocode : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    index = index de la colonne de l'élément à déplacer
    tant que la case correspond à index  - 1 est vide et qu'on est pas dans la première colonne à gauche
        mettre l'élément dans cette case et vider la case index
        index = index - 1
    fin tant que
    Par contre, je ne comprends pas ce que tu veux dire par
    Citation Envoyé par Seeverine Voir le message
    en plus lorsqu'il arrive à la colonne 0 il continue d'avancer
    Que signifie "avancer" ici ?
    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 averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 57
    Par défaut
    Merci de t'intéresser à mon problème..

    Si j'ai bien compris ce que tu as dit, mon code devrait ressembler à ceci?

    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
    		// Déplacement vers la gauche
    	public void deplacementG()
    	{
    		char tmp;
     
    		for (int i = 0; i < nbLig; i++)
    		{
    			for (int j = 0; j < nbCol; j++)
    			{
    				int a = j-1;
    				while (grille[i][a]== ' ' && a > 0)
    				{
    					a = a-1;
    				}
    				if (grille[i][a]== ' ')
    				{
    					tmp = grille[i][j];
    					grille[i][j] = ' ';
    					grille[i][a] = tmp;
    				}
    			}
    		}
    	}
    Ce que je veux dire par "avancer" c'est que lorsque la colonne 0 est atteinte, l'élément continue de se déplacer et donc disparaît de l'affichage

  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
    J'ai fait une erreur en ajoutant le -1 dans mon algo :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    index = index de la colonne de l'élément à déplacer 
    tant que la case correspond à index - 1 est vide et qu'on est pas dans la première colonne à gauche
        index = index - 1
    fin tant que
    si la case de colonne index est vide, alors mettre l'élément dans cette case et vider la case d'origine
    Donc le code serait plutôt ça :

    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
    for (int i = 0; i < nbLig; i++)
    		{
    			for (int j = 0; j < nbCol; j++)
    			{
    				if ( grille[i][j]!=' ') {  // autant ne déplacer que les cases non vide, ça ne sert à rien
    					int a = j; 
    					while (a > 0 && grille[i][a-1]== ' ') // il faut test d'abord l'index de colonne pour que l'autre condition ne plante pas
    					{ 
    						a--;
    					} 
    					if (a >= 0 && grille[i][a]== ' ')
    					{
    						grille[i][a] = grille[i][j]; // pas besoin du tmp (puisqu'une case vide contient toujours ' ')
    						grille[i][j] = ' ';
    					}
    				}
    			}
    		}
    Je ne vois rien pour afficher dans ton code. Quand bien même, normalement si on "sort" du tableau, on a une exception (ArrayIndexOfOutboundException). Donc j'ai un peu de mal à imaginer comment c'est possible.
    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 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
    Je viens de penser à une chose : on peut remplacer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (a >= 0 && grille[i][a]== ' ')
    par

    Cela n'a pas tout à fait la même sémantique (plutôt si on doit déplacer l'élément, mais c'est plus simple.
    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.

  6. #6
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 57
    Par défaut
    J'ai modifié ma fonction en utilisant le petit bout de code que tu as corrigé, mais au lancement j'obtiens une erreur java.lang.ArrayIndexOutOfBoundsException: -1

    elle fait référence à cette ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while (grille[i][a-1]== ' ' && a >= 0)

Discussions similaires

  1. Problème limite d'indice tableau
    Par Thyyb dans le forum VB.NET
    Réponses: 12
    Dernier message: 11/12/2013, 15h47
  2. Fixer les limites d'un tableau
    Par simipi dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 08/12/2011, 12h52
  3. [MySQL] Mysql LIMIT dans un tableau html
    Par xunil2003 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 10/03/2010, 08h11
  4. dépassement limite de tables
    Par Invité dans le forum Développement
    Réponses: 12
    Dernier message: 19/12/2008, 11h58
  5. Taille limite d'un tableau
    Par torNAdE dans le forum C++
    Réponses: 15
    Dernier message: 21/10/2006, 12h15

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