IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Java lang StringIndexOutOfBoundsException: String


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 684
    Par défaut Java lang StringIndexOutOfBoundsException: String
    Bonjour,
    lors de l'exécution, mon prg plante et donne le message suivantes:
    Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -103
    at java.lang.String.substring(Unknown Source)
    at Crypto3.main(Crypto3.java:21)
    quelqu'un peut m'aider svp

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    import java.util.Scanner;
    public class Crypto3 
    {
    	public static void main(String[] args) 
    	{
    	String bla,code;
    	//int i,decal;
    	System.out.println("Entrez la phrase à coder:");
    	Scanner sc=new Scanner(System.in);
    	bla=sc.nextLine();
    	System.out.println("Entrez l'alphabet clé:");
    	char cle=sc.next().charAt(0);
    	String alpha="abcdefghijklmnopqrstuvwxyz";
    	code="";
    	for(int i=1;i<bla.length();i++)
    	{
    		
    		String let=bla.substring(i,1);
    		boolean pos=alpha.contains(bla);
    		code = bla.substring(cle,i);
    	}
    	bla=code;
    	System.out.println("La phrase codée est:"+bla);
     }
    }
    merci d'avance

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Salut,

    La cause de l'erreur est en toute lettre (et chiffre) dans le message : Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -103

    Le caractère de position -103 n'existe pas ! Ou essaye tu d’accéder au caractère de position -103 ? Ici : code = bla.substring(cle,i);cle est un char !!! Le premier paramètre est un int et c'est la position du premier caractère qu'on veut extraire. Comme cle est un char, ça utilise son code ASCII comme int, qui est supérieur ou égale à 97. Comme le nombre suivant, c'est la fin de ce qu'il faut extraire, la méthode substring essaye de déterminer la taille de la chaîne à extraire, en faisant fin - début, Comme tu as dû saisir un h comme cle, ça donne 1 - 104 = -103. Et là, la méthode substring() soulève une exception pour dire : c'est quoi une chaîne de -103 caractères de long !!!
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre très actif
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 684
    Par défaut
    vous voulez que je fasse le typage, n'est ce pas?
    comme ceci:
    code = bla.substring((int)cle,i);
    mais toujours j'ai la même erreur

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par domxaline Voir le message
    vous voulez que je fasse le typage, n'est ce pas?
    Bah, non, le cast n'est pas obligatoire ici (sinon tu n'aurais pas pu compiler et on t'aurait dit qu'il n'y avait pas de méthode subtring(char, int) dans la classe String.

    Les questions sont :
    1. Pour quoi utiliser substring() ? Pour quoi faire ?
    2. Quels sont les paramètres à passer à substring() pour faire ce "quoi" ? Je parle des valeurs qui vont faire que cet appel va faire ce que tu cherches à faire ? Sachant que le premier est le début de la sous-chaine à extraire et le second, la fin ?
    3. Comment obtenir ces valeurs à partir des informations (variables) que tu as déjà dans le programme ?
    4. Comment peux-tu penser qu'un char (une lettre pour simplifier) puisse être une valeur adéquate en tant que position dans une chaîne de caractères ?
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Membre très actif
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 684
    Par défaut
    Pour quoi utiliser substring() ? Pour quoi faire ?
    pour extraire une chaine de caractères

    Quels sont les paramètres à passer à substring() pour faire ce "quoi" ? Je parle des valeurs qui vont faire que cet appel va faire ce que tu cherches à faire ? Sachant que le premier est le début de la sous-chaine à extraire et le second, la fin ?
    paramètres début index en int et fin index en int
    Comment obtenir ces valeurs à partir des informations (variables) que tu as déjà dans le programme ?
    ?? ce variable String bla
    Comment peux-tu penser qu'un char (une lettre pour simplifier) puisse être une valeur adéquate en tant que position dans une chaîne de caractères ?
    ???

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par domxaline Voir le message
    pour extraire une chaine de caractères
    Non, mais ça je m'en doute, c'est ce que fait la méthode. La question concernait le but fonctionnel de cet appel ! Pour résoudre quelle problématique ?

    Citation Envoyé par domxaline Voir le message
    paramètres début index en int et fin index en int
    C'est le sens qui est intéressant. Le type est secondaire. La méthode substring() prend des positions dans la chaîne. Il y a des int dans un programme pour lesquels ça n'a aucun sens de les utiliser comme position dans une chaîne !!!
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  7. #7
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par domxaline Voir le message
    Citation Envoyé par joel.drigo Voir le message
    Comment peux-tu penser qu'un char (une lettre pour simplifier) puisse être une valeur adéquate en tant que position dans une chaîne de caractères ?
    ???
    Ecrire du code Java n'est pas une finalité, mais un moyen. L'important c'est ce qu'on veut que le programme fasse. Et ça s'exprime avec des mots, des phrases, des constructions logiques, qui ont du sens. Ensuite seulement on l'encode, en utilisant par exemple un langage de programmation comme Java.
    C'est comme quand on veut raconter une histoire : on ne balance pas des mots les uns derrières les autres et on regarde après si ça fait des phrases, et que ces phrases forment une histoire cohérente.

    Si tu ne peux pas répondre à la question "pourquoi j'utilise un caractère comme début de sous-chaîne, alors que le début d'une sous-chaîne est un nombre ?", c'est parce que tu n'essayes pas de résoudre le problème sans écrire de code. Lorsque tu auras un algorithme fonctionnel, la traduction ne te fera pas (normalement) utiliser un caractère comme position dans une chaîne, parce que ce n'est pas la même chose.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

Discussions similaires

  1. java.lang.StringIndexOutOfBoundsException incompréhensible
    Par rebycM24 dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 28/02/2015, 17h29
  2. Réponses: 4
    Dernier message: 14/01/2010, 18h44
  3. java lang StringIndexOutOfBoundsException ?
    Par titof dans le forum Débuter avec Java
    Réponses: 4
    Dernier message: 05/08/2008, 14h54
  4. Réponses: 3
    Dernier message: 19/05/2006, 20h38
  5. [java.lang] Object/String --> compareTo() ou equals()
    Par wdionysos dans le forum Langage
    Réponses: 17
    Dernier message: 17/01/2006, 23h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo