J'ai une question concernant Java. J'ai commencé nouveau à Java et ma recherche Google a apporté de nombreux résultats mais non l'aide finale.
J'ai créé une classe pour suivre des informations historiques. J'ai des valeurs différentes pour différents jours et j'ai besoin de les mettre à jour régulièrement des Nations Unies. Je veux garder une trace des 30 derniers jours et créer un tableau avec 30 éléments. Lorsque j'appelle ma fonction "shift", je veux laisser tomber les derniers éléments n et mettre des zéros devant. Voici un exemple minial pour 5 jours: ce que je veux passer à faire est p> Je suis reconnaissable pour chaque type d'aide Vous pouvez également soutenir des impulsions de réflexion si vous pensez qu'il existe une manière plus élégante ou efficace. p> meilleur: -) p> p> P>
4 Réponses :
Vous pouvez essayer ceci: sortie: p> Lorsque shift_histinfo (2) code>, p>
int[] array={1,2,3,4,5,6}; int removelength=2; int e=1; while(e<=removelength) { for(int i=1;i<array.length;i++) array[array.length-i]=array[array.length-i-1]; e++; } for(int i=0;i<removelength;i++) { array[i]=0; } for(int g:array) { System.out.print(g); }
L'un des inconvénients de ceci est que la question implique un ensemble d'intensité, pas une liste
sauf si des contraintes de performance très serrées en utilisant les classes de collecte standard obtiendront le travail effectué. Java.UtilL.LinkedList.
En tant qu'exercice de programmation, vous pourriez envisager de créer un tampon d'anneau. L'idée étant d'éviter de copier la matrice sur chaque insertion. p>
Gardez une valeur OldestIdex. p>
Lorsque vous écrivez simplement, remplacez simplement l'élément [OldestIndex] et Incrément OldestIndex. P>
Pour itérer à OlderSindex et utilisez une méthode d'incrément Traiter avec l'emballage rond au début de la matrice. P>
int nextIndex(int current) { return (current + 1) % arrayLength; }
Pour les contraintes que vous avez souhaitées, bien que je puisse initialiser les données dans la même méthode au lieu de Tout ce qu'il fait est copier la valeur de l'index sur Le nouveau tableau commençant par Vous pouvez également faire le type de retour printLN: p> élément () code>. Je ne sais pas pourquoi le paramètre est de type
long code> alors je l'ai laissé et fait une variable locale code> code>.
M CODE> augmente ensuite / iTerate jusqu'à la fin de la matrice. P>
int [] code> et Ensuite, renvoyez simplement
modifié de la matrice code>. Au lieu de
histtinfo = modifié () ;fo.clone (); code> p>
Si vous souhaitez utiliser des tableaux (vous pouvez également utiliser une liste code> code> comme une liste
code>), vous devez plutôt travailler sur l'index. Vous auriez à copier inutilement des valeurs sinon.
Ce n'est pas un problème difficile et nous aimerions voir ce que vous avez essayé jusqu'à présent. Postez le code que vous avez écrit jusqu'à présent.
@Arvindkumaravinash: Merci pour votre réponse. Je ne peux pas vous donner du code de travail mais j'ai essayé de t'intéviser le problème de la fonction de la fonction 'Shift ()'. Je pensais qu'il pourrait y avoir une fonction de construction pour résoudre ce problème, sinon cela pourrait devenir très inefficace.