Renvoyer char

Résolu
Bonjour,

J'aimerai renvoyer le caractère que j'ai supprimer de ma table. Mais la méthode ne fonctionne pas

Voici mon code

Merci d'avance pour votre aide.

	public char supprime(int rang){
		char carac = 0;
		for (int i = 0 ; i < taille; i++){
			if (rang == table[i]){
				carac = table[i];
				for (int j = i+1; j > taille; j++){
					table[j-1] = table[j];
				}
			}
		}
		taille--;
		return carac;
	}


2 réponses

  1. Modérateur
    Bonjour,

    if (rang == table[i])
    va comparer ton rang avec la valeur dans le tableau, c'est à dire le char que tu veux retourner, ne voudrais tu pas plutôt faire
    if (rang == i)
    pour supprimer le caractère situé au rang donné ?
    Dans ce cas ta boucle for sur les i, ainsi que ton if, ne servent à rien puisque tu peux directement aller au bon rang vu que tu le connais.

    Et attention, dans ta boucle sur les j, tu fais j > taille ce qui est faux dès le départ puisque j = i+1.

    public char supprime(int rang) {
        char carac = table[rang];
        taille--;
        for (int i = rang; i < taille; i++) {
            table[i] = table[i+1];
        }
        return carac;
    }
    0
    1. Merci c'est beaucoup plus clair comme ça !
      0
  2. Modérateur
    J'ai un souci de compréhension de ton code :
    De ce que je pense que tu veux faire :
    - Tu appelles ta fonction pour retirer l'item d'index "rang" dans ta table "table" et tu compacte la table pour éviter le trou.
    De ce que je constate :
    - Tu appelles ta fonction pour retirer l'item "rang" de ta table et tu compactes ensuite.

    Si Rang est l'index de l'item à retirer, ta fonction est fausse.
    Si Rang est l'item à retirer alors ru n'as qu'à retourner "rang" ou au pire, faire un "break" avant de sortir de ton "if".
    0
    1. Effectivement rang est l'index du caractère à renvoyer.
      0