Suppression tableau

Fermé
helloworld95 - 16 mai 2017 à 15:23
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 16 mai 2017 à 22:18
Bonjour,

Dans le code si dessous, je ne comprend pas pourquoi je pourrait pas simplement faire
tableParticipant[i] = tableParticipant[i+1]
? J'ai déjà utilisé cette méthode mais dans ce contexte cela ne fonctionne pas et je ne comprend pas pourquoi.

	public boolean supprimerUnParticipant(String participant) {		
		for (int i = 0; i < nombreInscrits; i++){
			if (tableParticipants[i].equals(participant)){
				tableParticipants[i] = tableParticipants[nombreInscrits-1];
				nombreInscrits--;
				tableParticipants[nombreInscrits] = null;
				return true;
			}
		}
		return false;




A voir également:

1 réponse

KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
16 mai 2017 à 18:40
Bonjour,

"faire tableParticipant[i] = tableParticipant[i+1] ?"

Décaler une case n'est pas suffisant, il faut décaler toutes les cases jusqu'à la fin, sinon tu vas avoir un trou et perdre la dernière valeur.

Exemple : [1,2,3,4,5] je supprime 2, le décalage de 3 dans 2 donnerait [1,3,3,4], il faudrait encore décaler 4 dans 3 puis 5 dans 4 pour avoir [1,3,4,5]

"faire tableParticipants[i] = tableParticipants[nombreInscrits-1]"

Ici on ne fait toujours qu'une seule permutation, c'est donc plus rapide.
Inconvénient : cela change l'ordre des données.
0
helloworld95
16 mai 2017 à 21:33
D'accord merci et j'ai une autre question.

Dans le code ci dessous, j'ai du mal a comprendre pourquoi ca marche avec le && et non le ||.

	public boolean contient(int unEntier){
		if (nombreDEntiers == 0 && unEntier == 0)
			return false;
0
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
16 mai 2017 à 22:18
"pourquoi ca marche"
Sans le code complet difficile de savoir ce que ces 3 lignes de code sont censées faire, quel devrait être le résultat attendu et pourquoi avec les && c'est vrai et pourquoi avec les || c'est faux...

D'un point de vue générale, voir Java: les opérateurs logiques (booléens)
0