Enlever un objet d'un tableau en java

Résolu/Fermé
Auxxil - 2 juin 2012 à 17:22
 karakal - 2 juin 2012 à 18:59
Bonjour,
Je bloque sur un truc, je voudrais enlever un objet d'un tableau sans utiliser les collections. Voila ce que j'ai fait et ça ne marche pas! je vous remercie d'avance!!

int longueur = 10;
Objet[] objets = new Objet[longueur];
Objet[] temp = new Objet[longueur];
for(int j = i+1; j == longueur-1; j++){
objets[i-1]=temp[i];
}



A voir également:

1 réponse

KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
Modifié par KX le 2/06/2012 à 18:00
Là, il y a plusieurs choses qui clochent, où est la déclaration de i ? quel est le tableau de départ et celui d'arrivé ? pourquoi objets et temp ont-ils la même taille ?

Je te conseille de faire une méthode pour faire cette manipulation, ce sera plus clair.
La confiance n'exclut pas le contrôle
2
Desole ce n'est qu'un petit bout de mon code, la déclaration de i a été faite ailleurs le tableau d'arrivée est objets. En gros Je veux supprimer un élément de objets. Pour cela je crée temp que est une copie de objets et je veux décaler les éléments dans temps voici la méthode sur laquelle je travaille! merci!

public Objet retirer(Objet obj){
int i = 0;
Objet objet = null;
Objet[] temp = new Objet[longueur];
while(!objets[i].equals(obj) && i < longueur){
i++;
}
if(i == longueur)
System.out.println("L'objet n'existe pas dans la piece!!");
else{
objet = objets[i];
for(int j = i+1; j == longueur-1; j++){
objets[i-1]=temp[i];
}
}
return objet;
}
//objets a été déclaré avant!
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
2 juin 2012 à 18:57
Il y aurait plein de choses à dire sur ce code, mais entre autre choses, il n'est pas normal que tu ais la même longueur pour les deux tableaux alors que tu enlèves un élément, en plus tu utilises une variable "longueur" sans qu'on ne sache trop d'où elle sort, sans oublier ta condition d'arrêt dans la boucle for, qui évidement ne pourra pas fonctionner...

Comme je n'ai pas trop envie de tourner autour du pot, voici une méthode qui devrait faire pareil, j'espère que tu la comprendras...

public static Objet retirer(Objet obj)
{
	Objet objet = null;
	
	Objet[] temp = new Objet[objets.length-1];
	
	for (int i=0; i<objets.length; i++)
	{
		if (objet==null)
		{
			if (objets[i].equals(obj))
			{
				objet = obj;
			}
			else if (i<objets.length-1)
			{
				temp[i] = objets[i];
			}
		}
		else
		{
			temp[i-1]=objets[i];
		}
	}
	
	if (objet != null)
		objets = temp;
	
	return objet;
}
0
merci :)
0