0
votes

Java: Comment réparer "l'index de chaîne hors de portée: #"?

Je tente de brouiller deux lettres aléatoires d'une chaîne qui n'est pas la première lettre ou deux derniers. Je reçois une erreur d'une erreur "d'index de chaîne" lors de la compilation. J'ai essayé d'attirer de nombreuses solutions différentes, mais rien ne semble fonctionner.

Pour cette affectation, nous devons utiliser une méthode et des commandes .chat. J'ai essayé de créer des variables pour les deux caractères aléatoires, puis de les ajouter à la corde retournée, mais ne pouvait pas y arriver non plus. xxx

Je m'attends à une sortie d'une chaîne avec deux de ses caractères brouillés. Par exemple, "fantastique" serait "fantastique" ou "fnatiastic".


2 commentaires

Assurez-vous que la valeur "place" n'est pas supérieure à la longueur de la chaîne avant d'appeler .chathat


Pourquoi obtenez-vous l'erreur lors de la compilation?


4 Réponses :


0
votes

Vous faites: xxx

donc les index intérieurs newword vont de 0 à place-1 de
Ensuite, vous faites: xxx

mais cet index n'existe pas dans votre chaîne. C'est hors de liaison

voir le doc


0 commentaires

0
votes

Lorsque vous créez NEWWORD = INPUT.SUBSTRING (0, Place) Il dispose exactement de Placer caractères. Vous ne pouvez pas demander charat (place) à partir de celui-ci, le dernier caractère est sur place-1 .

Si vous souhaitez échanger des caractères convertir une entrée en Char [] et générer des index aléatoires pour échanger. xxx


0 commentaires

0
votes

Vous pouvez essayer xxx

entrée: fantastique Sortie: fanatstic, gras, fanatstic


0 commentaires

0
votes

Essayez quelque chose comme ceci:

public static String scramble(String input) {
    int range = input.length() - 3;
    int place = (int)(Math.random() * range);
    String newWord = input.substring(0, place);
    newWord = newWord + input.charAt(place + 1);
    newWord = newWord + input.charAt(place);
    // if you need the whole input, just 2 characters exchanged, uncomment this next line
    // newWord = newWord + input.substring(place + 2, range);
    return newWord;
}


0 commentaires