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 :

Erreur java.lang.String.charAt(Unknown Source)


Sujet :

avec Java

  1. #1
    En attente de confirmation mail
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2014
    Messages : 24
    Points : 40
    Points
    40
    Par défaut Erreur java.lang.String.charAt(Unknown Source)
    Salut, je développe un petit programme qui va prendre un String dans un tableau en fonction d'un texte et j'ai un problème :
    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
    String alpha = "!#$%&'()*+'-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZé[]^_'abcdefghijlmnopqrstuvwxyz{|}#} ";
     
    	    int N = alpha.length();
    	    String Tab[] = new String[N];
     
    		for (int ab = 0; ab != N; ab++) {
    			calc();
    			Tab[ab] = mdp;
    			System.out.println(ab+" "+alpha.charAt(ab)+" "+" "+mdp);
    		}
     
    		String txt = "tft4";
    		int ll = txt.length();
    		System.out.println(ll);
    		int n = 0;
    		int ny = 0;
    		while (ny <= ll) {
    			while (txt.charAt(ny) != alpha.charAt(n)) { n ++; } 
    			System.out.println("\n[*] "+n+" "+txt.charAt(ny)+" "+Tab[n]);
    			ny++;
    		}
    et quand j’exécute mon programme voila l’erreur qu'il me met :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 94
    	at java.lang.String.charAt(Unknown Source)
    	at Crypt1.main(Crypt1.java:47)
    quelqu'un aurais il une solution ?

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    Les index d'un tableau vont de 0 à taille-1. Ta boucle va de 0 à taille, donc une case trop loin. Donc erreur quand tu dépasser de la taille du tableau.

  3. #3
    Rédacteur

    Avatar de autran
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2015
    Messages
    1 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2015
    Messages : 1 241
    Points : 7 653
    Points
    7 653
    Billets dans le blog
    55
    Par défaut
    ouai ici pour etre précis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while (txt.charAt(ny) != alpha.charAt(n)) { n ++; }

  4. #4
    En attente de confirmation mail
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2014
    Messages : 24
    Points : 40
    Points
    40
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Les index d'un tableau vont de 0 à taille-1. Ta boucle va de 0 à taille, donc une case trop loin. Donc erreur quand tu dépasser de la taille du tableau.
    Donc selon vous j devrais modifier la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int ll = txt.length()-1;
    mais le probleme persiste
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    [*] 81 t *********
    Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 93
    	at java.lang.String.charAt(String.java:658)
    	at Crypt1.main(Crypt1.java:45)

  5. #5
    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 : 54
    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
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Oui mais le problème existe pour les 2 boucles : celle sur ny et celle sur n.

    Au lieu de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int ll = txt.length()-1;
    Laisse :
    Et change ta borne de boucle :
    Ensuite pour ta boucle sur n, il faut également la borner :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    while (ny < ll) {
        while (n<alpha.length() && txt.charAt(ny) != alpha.charAt(n)) { n ++; } 
    /* ... */
    Accessoirement, au lieu de faire la seconde boucle pour chercher n, tu peux utiliser indexOf() :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int n=alpha.indexOf( txt.charAt(ny) );
    et teste au moins si le caractère a été trouvé (ici if ( n!=-1 ) et avec ta boucle if (n<alpha.length())).

  6. #6
    En attente de confirmation mail
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2014
    Messages : 24
    Points : 40
    Points
    40
    Par défaut
    Marche nikél, Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 24/10/2013, 10h54
  2. Réponses: 2
    Dernier message: 19/07/2013, 09h20
  3. Réponses: 1
    Dernier message: 24/10/2011, 11h25
  4. Erreur at java.awt.Container.addImpl(Unknown Source)
    Par saloua2200 dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 25/10/2010, 11h38
  5. Réponses: 1
    Dernier message: 24/02/2009, 19h18

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