Comment faire pour supprimer un élément d'un tableau?
Je suis en train de déposer un élève de cours, et c'est ce que j'ai obtenu jusqu'à présent..
public void dropStudent() {
String id;
System.out.println(" Enter student ID " );
id = Keyboard.readString();
for ( int i = 0; i <= students.length - 1; i++)
{
if (id.equals(students[i].displayId()))
{
for (int j = i; j <= students.length - 1; j++)
{
students[i] = students[i+1];
}
}
}
}
Donc, la première boucle est, pour chaque élément de la matrice, l'instruction if est de vérifier si l'id d'entrée de match est un étudiant de l'id de tableau. le deuxième "Pour" est de changer les éléments. quand je l'ai essayer, il n'supprimer un élève en particulier. mais au lieu de déplacer les éléments, il ne fait que copier l'élément suivant dans les deux endroits. j'ai essayé de définir l'élément à null, mais il ne fonctionne pas.
donc des suggestions s'il vous plaît ? je suis également pas autorisés à utiliser la liste des ensembles ou d'autres choses.
- Java n'est pas le JavaScript (ou vice versa). Ne pas les confondre.
- en.wikipedia.org/wiki/List_of_computer_term_etymologies#J
- Très bien, ma faute.
- Je vous conseille d'utiliser une Liste comme la structure de données de choix pour ce problème. À l'aide de tableaux de cette façon est tout à fait inefficace.
- Il a dit "je ne suis pas autorisé à utiliser de tableau liste ou d'autres choses." Je suppose que c'est pour une mission.
- Ah, j'ai raté la partie. Continuez!
- Le problème, je vais dans une base de Java cours, et nous n'avons pas encore été présenté à la Liste du réseau.
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas modifier la taille d'un tableau Java après l'instanciation. Si tout ce qui est nécessaire est de retourner un tableau sans la carte d'étudiant. Vous voulez créer un nouveau tableau avec un moins de l'élément, et de parcourir le tableau d'origine, la copie de tous, mais l'id que vous souhaitez supprimer.
Normalement, vous souhaitez utiliser des listes pour cela. Mais compte tenu de vos contraintes, c'est comment j'allais l'aborder.
Quelque chose comme:
Remplacer:
avec:
En effet, vous voulez aller à travers tous le reste de la matrice avec votre variable de boucle
j
et pas aveci
qui représente l'indice de l'étudiant à être supprimé.Aussi, vous avez besoin de remplacer votre boucle:
avec
(avis 1 modifié en a 2)
La raison pour cela est que vous avez accès
students
avec l'indice j+1 si j == les étudiants.longueur - 1, sera égal aux étudiants.longueur, et, par conséquent, vous aurez un ArrayOutOfBounException.Enfin, vous avez à définir le dernier élément du tableau comme nulle (ou le dernier étudiant sera dupliqué). Ou mieux encore, vous pouvez redimensionner le tableau (c'est-à créer un nouveau tableau et copie de la liste des étudiants en elle).
Aussi, si vous avez plusieurs copies d'étudiants dans le tableau et vous voulez juste de supprimer le premier, vous devez ajouter
break
lorsque vous avez trouvé l'élément à être supprimé.break;
après l'intérieur de la boucle, à moins qu'il veut éliminer toutes les copies de l'étudiant.Arrays.copyOfRange
Vous pouvez effectuer les opérations suivantes:
Vous voulez éliminer un certain " x " de la position de la matrice, ce que vous venez de
faire une eipd à gauche de tous les éléments sur la position suivante de la
tableau. Garder une taille variable, une diminution des il;
Vous pouvez avoir un drapeau
de la classe qui ont des renseignements sur l'étudiant, et quand vous avez supprimé, vous
la marque de cet indicateur comme supprimé. Faux -> supprimé, Vrai -> pas supprimé.
Vous pouvez utiliser une liste de tableaux au lieu d'un tableau.
Si l'ordre n'a pas d'importance, vous pouvez tout simplement faire:
Il suffit de prendre le dernier élément et l'ajustement de l'écart réel. Cependant, vous devez faire quelque chose avec la dernière position, d'une certaine manière de le marquer comme vide (vous pouvez définir la valeur null par exemple).
Si l'ordre n'question, alors vous pouvez le faire également à l'aide d'un auxiliaire de tableau:
dans :