0
votes

Comment supprimer le dernier élément de la matrice et mettre de nouveau devant?

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: xxx

ce que je veux passer à faire est xxx

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.

meilleur: -)


3 commentaires

Si vous souhaitez utiliser des tableaux (vous pouvez également utiliser une liste comme une liste ), 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.


4 Réponses :


0
votes

Vous pouvez essayer ceci: xxx

sortie:

Lorsque shift_histinfo (2) , xxx < / pré>


0 commentaires

0
votes
    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);
    }

1 commentaires

L'un des inconvénients de ceci est que la question implique un ensemble d'intensité, pas une liste . Mais il met en évidence pourquoi les collections sont généralement un choix bien meilleur que les matrices - vous pouvez utiliser des méthodes pratiques telles que tournez :)



1
votes

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;
}


0 commentaires

0
votes

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 élément () . Je ne sais pas pourquoi le paramètre est de type long alors je l'ai laissé et fait une variable locale .

Tout ce qu'il fait est copier la valeur de l'index sur Le nouveau tableau commençant par M augmente ensuite / iTerate jusqu'à la fin de la matrice.

Vous pouvez également faire le type de retour int [] et Ensuite, renvoyez simplement modifié de la matrice . Au lieu de histtinfo = modifié () ;fo.clone (); xxx

printLN: xxx


0 commentaires