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 :

découpage de chaîne


Sujet :

avec Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 120
    Points : 43
    Points
    43
    Par défaut découpage de chaîne
    Bonjour,
    voici un exercice que je n'arrive pas à compilé, il ne reconnait pas les méthodes de la class string !

    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
     
    import java.util.*;
    import java.lang.*;
    import java.lang.String;
     
    public class Chaine{
     
        public Chaine(){}
     
        public ArrayList<String> decoupeChaine(String phrase,String separateur){
    	ArrayList<String> decoupPhrase=new ArrayList<String>();
    	while((indexOf(separateur))!=-1){
    	    decoupPhrase.add(phrase.substring(0,indexOf(separateur)));
    	    phrase=phrase.substring((indexOf(separateur))+1,phrase.length());
    	}
    	return decoupPhrase;
        }
    }
    programme principal:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    import java.util.*;
     
    public class TestDecoup{
        private static String phrase="Bonjour tout le monde";
        private static String separateur=" ";
        private static Chaine c=new Chaine();
        public static void main(String[] args){
    	System.out.println(c.decoupeChaine(phrase,separateur));
        }
    }
    le but de l'exercice est de découper une chaîne en lui donnant un séparateur
    exemple: Bonjour tous le monde (string) donne une liste : ('Bonjour','tout','le','monde')

    Pourquoi il ne reconnait pas les méthodes de la class String ?

    Merci d'avance pour votre aide.

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 120
    Points : 43
    Points
    43
    Par défaut
    seconde question sur les exceptions :
    pourquoi ce programme me renvoi cette erreur en compilant:
    TestLE.java:17: unreported exception outOfBound; must be caught or declared to be thrown
    System.out.println(le.secondPlusPetit(tabEntier));

    voici le programme:
    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
    27
     
    import java.util.*;
     
    public class ListEntier{
        public ListEntier(){}
     
     
        public int plusPetit(ArrayList<Integer> l){
    	int plusPetit=l.get(0);
    	int savePos=0;
    	for(int i=1;i<l.size();i++)
    	    if(plusPetit>l.get(i)){
    		plusPetit=l.get(i);
    		savePos=i;
    	    }
    	return savePos;
        }
     
        public int secondPlusPetit(ArrayList<Integer> l) throws outOfBoundException{
    	if(l.size()<2)
    	    throw new outOfBoundException();
    	else{
    	    l.remove(plusPetit(l));
    	    return(l.get(plusPetit(l))); 
    	}
        }
    }
    programme principal:
    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
     
    import java.util.*;
     
    public class TestLE{
        private static ArrayList<Integer> tabEntier=new ArrayList<Integer>();
        private static ListEntier le=new ListEntier(); 
        public static void main(String[] args){
    	tabEntier.add(1);
    	tabEntier.add(4);
    	tabEntier.add(7);
    	tabEntier.add(2);
    	tabEntier.add(8);
    	tabEntier.add(1);
    	tabEntier.add(9);
    	tabEntier.add(5);
    	tabEntier.add(6);
    	System.out.println(tabEntier);
    	System.out.println(le.secondPlusPetit(tabEntier));
        }
    }
    et enfin l'exception:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public class outOfBoundException extends Exception{
        public outOfBoundException(){
    	super("OutOfBoundExeption");
        }
    }

  3. #3
    Membre confirmé
    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
    Points : 480
    Points
    480
    Par défaut
    Bonjour,

    Pour la première question,
    la méthode indexOf doit (comme toute les méthodes) être appelée sur une instance d'objet.
    Comme celà à été fait pour la méthode substring, c'est à dire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    while ((phrase.indexOf(separateur)) != -1) {
    ...
    }
    Et comme celà pour chaque utilisation de la méthode.


    Pour la deuxième question, il faut regarder comment fonctionne la gestion des Exception en java.
    Il faudra utiliser un try/catch pour attraper l'exception outOfBoundException:
    Par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    try {
    System.out.println(le.secondPlusPetit(tabEntier));
    } catch(outOfBoundException exception) {
        // traiter l'exception.
        exception.printStackTrace();
    }
    a+

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2008
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mexique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2008
    Messages : 328
    Points : 459
    Points
    459
    Par défaut
    Salut,

    Première question:

    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
    import java.util.*;
       import java.lang.*;
       import java.lang.String;
     
        public class Chaine{
     
           public Chaine(){}
     
           public ArrayList<String> decoupeChaine(String phrase,String separateur){
             int ind = phrase.indexOf(separateur); // <<<<<<<<<< ajout
             ArrayList<String> decoupPhrase=new ArrayList<String>();
             while(ind != -1) // <<<<<<<< modif
             {
                decoupPhrase.add(phrase.substring(0,ind));
                phrase = phrase.substring(ind +1);
                //phrase=phrase.substring((indexOf(separateur))+1,phrase.length());
                ind = phrase.indexOf(separateur); // <<<<<<<<<< separateur suivant
             }
             decoupPhrase.add(phrase.substring(0)); //<<<<<<<<< pour le dernier mot (monde)
             return decoupPhrase;
          }
       }
    Cordialement,

    Dan

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2008
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mexique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2008
    Messages : 328
    Points : 459
    Points
    459
    Par défaut
    Re,

    Mais tu pourais utiliser decoupPhrase retournée:

    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
    import java.util.*;
     
        public class TestDecoup{
          private static String phrase="Bonjour tout le monde.";
          private static String phrase="";
          private static String separateur=" ";
          private static Chaine c=new Chaine();
    //ajouter:
          private static ArrayList<String> decoupPhrase = new ArrayList<String>();
     
         public static void main(String[] args){
    // remplacer:
             //System.out.println(c.decoupeChaine(phrase,separateur));
    // par:
             decoupPhrase = c.decoupeChaine(phrase,separateur);
             for (int i = 0; i < decoupPhrase.size(); i++)
                System.out.println(decoupPhrase.get(i) + "\n");
          }
       }
    Dan

  6. #6
    Membre chevronné Avatar de guigui5931
    Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2006
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 667
    Points : 2 232
    Points
    2 232
    Par défaut
    Pour ce qui est de ta seconde question cela vient du fait que ta méthode secondPlusPetit renvoi une outOfBoundException :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     public int secondPlusPetit(ArrayList<Integer> l) throws outOfBoundException
    Quand elle est appellée il faut donc traiter cette exception soit :
    - le mieux par un try catch
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    try
    {
    System.out.println(le.secondPlusPetit(tabEntier));
    }catch (outOfBoundException  e)
    {
    System.out.println("Erreur dans le main :outOfBoundException  " );
    - moins bien en la laissant passer par un throws dans la déclaration de ta méthode main
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public static void main(String[] args) throws outOfBoundException{
    autant l'hiver éclate que l'hétéroclite
    le vrai geek c'est celui qui croit qu'il y a 1024 mètres dans un kilomètre

Discussions similaires

  1. Réponses: 2
    Dernier message: 19/10/2007, 15h39
  2. Réponses: 4
    Dernier message: 19/10/2007, 10h46
  3. [Tableaux] Découpage de chaîne
    Par ssebuser dans le forum Langage
    Réponses: 10
    Dernier message: 21/12/2006, 18h12
  4. Découpage de chaînes
    Par innova dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 21/10/2006, 11h07
  5. [Débutant] Découpage de chaîne
    Par wkd dans le forum WinDev
    Réponses: 4
    Dernier message: 26/07/2006, 16h43

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