Ajouter un élément dans un tableau java
Voici ce que la mise en page est
index num
0 [10]
1 [20]
2 [30]
(Add 35 here)
3 [40] Move elements down
4 [50]
5 [60]
6 [70]
alors ma méthode est cette
public static void method(int[] num, int index, int addnum)
{
}
Comment puis-je ajouter 35 là?
Essayé ceci:
public static void method(int[] num, int index, int addnum)
{
int index = 10;
for(int k = num.length k>3; k++)
{
Num[k]=num[k++]
}
Num[3] = 35;
Fait peu connu, vous pouvez utiliser des Tableaux.binarySearch pour trouver l'indice de l'endroit où vous devez insérer (docs.oracle.com/javase/6/docs/api/java/util/Arrays.html).
Vous êtes sur la bonne voie avec ce que vous avez essayé, mais après la copie sur la valeur que vous souhaitez ajouter, vous devez ajouter à la fin du tableau original.
Vous êtes sur la bonne voie avec ce que vous avez essayé, mais après la copie sur la valeur que vous souhaitez ajouter, vous devez ajouter à la fin du tableau original.
OriginalL'auteur user1284791 | 2012-03-22
Vous devez vous connecter pour publier un commentaire.
Que c'est quelque chose que vous devez faire vous-même, je me contenterai de fournir la méthode pour la mettre en œuvre, pas le code:
Si vous définissez le nombre à la position
index
, vous serait de remplacer la valeur qui était là auparavant. Donc, ce que vous devez faire est de déplacer tous les éléments d'une place vers la fin du tableau à partir deindex
:num[x]
devientnum[x+1]
, etc.Vous trouverez que vous avez besoin de faire cela dans l'ordre inverse, sinon vous allez remplir votre tableau avec la valeur de la
num[index]
.Au cours de ce processus, vous aurez besoin de décider quoi faire avec la dernière entrée du tableau (
num[num.length - 1]
):Après cela, vous avez dupliqué
num[index]
: la valeur est présente dansnum[index+1]
, aussi, comme vous l'avez déplacé loin.Maintenant, il est possible d'écrire la nouvelle valeur à la position souhaitée sans substitution d'une valeur existante.
MODIFIER
Vous avez plusieurs erreurs dans votre code:
k
, vous devez décrémenter (k--
, pask++
)k
de nouveau dans votre corps de boucle: il est mis à jour deux fois dans chaque cyclek = num.length
, vous essayez d'écrire ànum[num.length + 1]
, ce qui n'est pas possibleOriginalL'auteur soulmerge
Très grossièrement, vous voulez faire quelque chose comme ceci:
OriginalL'auteur DukeOfMarmalade
Vous devez
allouer un nouveau tableau avec de la place pour un nouvel élément.
Copie de tous les éléments et de laisser la place à celui de l'insertion.
Insérer 35 dans l'emplacement vide.
Noter que c'est pas possible de faire dans une méthode comme ceci:
puisque vous ne peut pas modifier la longueur de
num
.Vous besoin pour allouer un nouveau tableau, ce qui signifie que la nécessité de retour le nouveau tableau:
et ensuite appeler la méthode comme ceci:
void
-ne sera pas la nouvelle alloué tableau jeter?OriginalL'auteur aioobe
Puisque cela de très près semblable devoirs que vous devez comprendre, c'est que vous ne pouvez pas augmenter dynamiquement la taille d'un tableau. Donc, dans votre fonction:
Que le pseudo-code ci-dessus devrait vous obtenir a commencé.
OriginalL'auteur Woot4Moo
Ce que vous cherchez est un le tri par insertion.
Il du travail de la classe, donc c'est à vous de trouver le bon code.
OriginalL'auteur jefflunt
Bien, vous ne pouvez pas, sauf si il y a "un espace supplémentaire" de votre tableau, et ensuite, vous pouvez déplacer tous les éléments [à partir de
index
] un élément vers la droite, et ajouter 35 [num
] à la place.[ce qui se passent dans la réalité, c'est que le dernier élément est jeté out].
Cependant - une meilleure solution sera probablement utiliser un ArrayList, et d'utiliser la méthode
myArrayList.ajouter(indice,élément)
OriginalL'auteur amit
Comment à ce sujet?
OriginalL'auteur Arijit