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

Java Discussion :

Java et les chaînes de caractères


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de blackhock
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 75
    Par défaut Java et les chaînes de caractères
    BONJOUR A TOUS,
    Je sollicite votre aide sur un petit problème de traitement de chaînes en JVA :
    Voici mon code :

    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
     
    public class TreatmentFile {
     
    	public static String omega;
     
    	public static void treatement() {
     
    		omega = (ReadFile.Text3);
     
    		try {
    			if (omega != null) {
    				omega = omega.replace("&", "");
    				omega = omega.replace("add", "Add");
    				omega = omega.replace("set", "Set");
    				omega = omega.replace("*/", "");
    				omega = omega.replaceFirst("void", "");
     
    				String beta = omega.substring(omega.indexOf("e"),omega.indexOf("p"));
    				omega = omega.replace(beta, "BONJOUR ");
    				System.out.println(beta);
     
     
    			} else {
    				log("Empty or invalid line. Unable to process.");
    			}
    			 log(omega); // print in the screen
    Je precise que mon Omega est un fichier que je lis avec un BufferedReader.
    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
     
    		try {
    			InputStream myFic = new FileInputStream(fichierTXT);
    			InputStreamReader myFich = new InputStreamReader(myFic);
    			BufferedReader br = new BufferedReader(myFich);
    			try {
    				while ((ligne = br.readLine()) != null) {
    					Text3 += ligne + "\n";
    				}
    			} finally {
    				br.close();
    			}
    		} catch (Exception e) {
    			System.out.println(e.toString());
    		}
    Mon principal problème c’est que je vous repérer des mots avec la méthode substring et remplacer ces mots par d’autres expressions, mon programme compile mais lorsque je lance l’exécution j’ai une exception un peu bizarre que je ne comprends pas trop.

    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: -6
    	at java.lang.String.substring(Unknown Source)
    J’ai l’impression qu’il ne trouve pas un ‘e’ et un ‘p’ dans mon text et pourtant il u’en a plein… ou peut etre c’est à cause de ça… ????
    Pourriez-vous m’aider à résoudre mon problème SVP
    Merci pour toute aide
    Cordialement

  2. #2
    Membre Expert
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Par défaut
    Bonjour, cette erreur indique que tu utilises la méthode substring avec des index qui sont en dehors de la chaîne de caractères.

    Il suffit que tu ajoutes une trace avant le substring pour voir la valeur de omega :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println(omega);

  3. #3
    Membre confirmé Avatar de blackhock
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 75
    Par défaut
    Je suis d’accord avec toi CheryBen, mais le souci que mon omega avant le substring est un texte(donc des ‘e’ et des ‘p’ il y’en a plein), et je ne vois pas d’où ça peux venir cette erreur… ???????

  4. #4
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 380
    Par défaut
    Bonjour,

    Ton problème vient surement du fait que le premier caractère 'p' est avant le premier caractère 'e'. Du coup ton substring plante, parce que l'indice de départ est supérieur à l'indice de fin. On pense que l'on peut même dire que le premier 'p' est 6 caractères avant le premier 'e'.

    Qu'est ce que tu en penses?

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 69
    Par défaut
    Ne pas oublier que substring prend comme premier paramètre un index basé sur 0 alors que le deuxième prend un index basé sur 1.
    Essaie plutot omega.substring(omega.indexOf("e"),omega.indexOf("p") + 1);

  6. #6
    Membre confirmé Avatar de blackhock
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 75
    Par défaut
    et non toujours cette maudite erreur ha ha
    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: -5
    	at java.lang.String.substring(Unknown Source)
    je pense que c'est du au fait que je lis avec un BufferedReader....? qq vous dites vous.
    Merci encore

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 69
    Par défaut
    Si tu affiche omega avant le traitement, ca t'affiche quoi??

Discussions similaires

  1. Les chaînes de caractère en JAVA
    Par blackhock dans le forum Général Java
    Réponses: 10
    Dernier message: 14/05/2009, 08h59
  2. [MySQL] fonctions qui convertit les chaînes de caractères en entier
    Par poyoland dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 02/03/2007, 11h36
  3. MFC + Manipuler les chaînes de caractères
    Par mqsi dans le forum MFC
    Réponses: 2
    Dernier message: 15/11/2006, 16h24
  4. Réponses: 6
    Dernier message: 08/08/2006, 09h14

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