Décalage tableau à droite - devoirs
C'est ce que j'ai à ce jour, mais quand je le lance, j'obtiens un Java erreur d'incompatibilité.
C'est mon tableau:
char[] letters = {'A', 'B' , 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'};
/********************************************************************************
shiftRight() will move the contents of the array one slot to the right
********************************************************************************/
public static void shiftRight( char [] letters )
{
char last = letters[letters.length-1]; //save off first element
//shift right
for( int index =letters.length-1; index >= 0 ; index-- )
letters[index+1] = letters [index];
//wrap last element into first slot
letters[0] = last;
System.out.print("\nshifted Array: " );
}
je dois maj tout à droite . le dernier caractère doit être insérés dos en lettres[0]
Utilisation println() au lieu de les imprimer(\n)
Utilisation println() au lieu de les imprimer(\n)
OriginalL'auteur javip | 2012-10-29
Vous devez vous connecter pour publier un commentaire.
Vous pouvez faire quelque chose comme:
J'ai seulement modifié votre:
letters.length-1
enletters.length-2
et d'imprimer le tableau.Un autre, plus facile à utiliser,
System.arraycopy
comme:Pour imprimer le tableau, vous pouvez également utiliser:
est à partir de l'indice de la précédente pour le dernier élément, puisque dans sa boucle, il est en train de faire:
letters[index+1]
qui doit être le dernier élément.une erreur lorsqu'il tente de faire le tableau en une chaîne de caractères
Quelle version de java êtes-vous en cours d'exécution? Et quelle est l'erreur? Les tableaux de.toString devrait être disponible depuis 1.5 (java 5).
java 7 cette s la erro
OriginalL'auteur dan
Quand
letters[index+1]
est exécuté pour la première fois dans la boucle for (quandindex = letters.length-1
), elle est pointée àletters[letters.length]
qui n'est pas un index valide, comme les indices vont de0
àlength-1
.Mise à jour de votre boucle for pour commencer
index
àletters.length-2
et aussi assurez-vous que votrearray.length>1
. C'est-à-dire:Aussi en fin de compte, vous pouvez imprimer le tableau en tant que:
EDIT: Exemple de code de travail.
Si vous faites le tableau comme
Character
tableau par exemple, ci-dessous dans votremain
(ce qui est nécessaire pour l'assistance en impression SEULEMENT)et de passer ensuite que
shiftRight
méthode de mise à jour du code comme ci-dessous:Vous devriez être tous ensemble.
Pouvez-vous s'il vous plaît partagez vos lettres de tableau? Aussi laissez-moi savoir, quel est-il de l'impression? J'ai ajouté un exemple de code qui semble de travail. Veuillez vérifier.
char[]lettres = {'A', 'B' , 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'}; c'est quoi de l'impression[C@eb017e
hmm fait que d'imprimer toutes les lettres décalé?
J'ai utilisé l'exemple de code dans ma réponse, et il imprime
Shifted Array: JABCDEFGHI
. Essayez d'imprimer un char à un moment comme :for(char c: letters){ System.out.println(String.valueOf(c));}
.OriginalL'auteur Yogendra Singh
ajouter
à l'intérieur de votre boucle avant
si vous ne cochez pas
if(index<letters.length-1)
condition que vous obtenez erreur arrayindexoutofbounds Exception lors de votre dernière inddex iciletters[index+1] = letters [index]
OriginalL'auteur PermGenError
En effet, vous obtenez un
ArrayIndexOutOfBoundsException
dès que vous le souhaitez à lire (dans la boucle):La cause en est la votre
index
l'initialisation d'une variable:index = letters.length-1
Donc
letters[index+1] == letters[letters.length]
mais logiquementletters.length
conduit àArrayIndexOutOfBoundsException
.Un moyen simple de corriger votre code sans changer de logique:
Avis de l'opérateur signe
>
au lieu de>=
. Sinon, ce serait également conduire à la mêmeException
.En outre, afin d'afficher le tableau final, utilisation:
Arrays.toString(letters)
J'ai même écrit ma solution en gardant votre logique:
OriginalL'auteur Mik378