Vercor

cs_mariam1987 Messages postés 20 Date d'inscription vendredi 29 février 2008 Statut Membre Dernière intervention 21 août 2010 - 14 mai 2008 à 09:54
cs_mariam1987 Messages postés 20 Date d'inscription vendredi 29 février 2008 Statut Membre Dernière intervention 21 août 2010 - 14 mai 2008 à 20:05
Salut a tous.
je commence a programmer en java et j'ai ecrit un morceau de code  qui ne marche pas et je ne sais pas ou est le probleme::

  import java.util.Vector;
 public class vect
 {
  String [] titres={"a","b","c","d"};
    String c=new String("");
    Vector v= new Vector();

    public  vect()
    {
    for (int i=0;i<=titres.length+1;i++)
    {
     c=titres[i];
      v.addElement(c);
    }
    } 
   
     public static void main(String args[])
     {
     vect t = new vect();
     t.v.get(2);
     }
   
 } 
  
en effet "t.v.get(2)" n'affiche rien .
il donne seulement:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4
    at vect.(vect.java:14)
    at vect.main(vect.java:21)


Process completed.

je ne sais pas si  ce que j'ai ecrit est correcte ou non.
merci de m'aider.

7 réponses

Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
14 mai 2008 à 10:08
Salut,

change la boucle
for (int i = 0; i <= titres.length + 1; i++)

en
for (int i = 0; i < titres.length; i++)

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
0
cs_Chatbour Messages postés 764 Date d'inscription jeudi 27 juillet 2006 Statut Membre Dernière intervention 6 septembre 2010 19
14 mai 2008 à 10:08
Salut,

c'est normal puisque dans la boucle tu dépasses la taille du tableau titre :

remplace :

for (int i=0;i<=titres.length+1;i++)

par :
for (int i=0; i<titres.length; i++)

et ça devra marcher..
0
Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 1
14 mai 2008 à 10:09
si tu mets des String dans ton Vector , realise 1 casting ...

private Vector<String> monVecteurDeString;

...
// lors de la création
monVecteurDeString = new Vector<String>();

// pour ajouter ,recuperer des données
public void setMonVecteurDeString(String chaine)
{
    this.monVecteurDeString.add(chaine);
}

public String getMonVecteurDeString(int index)
{
    return this.monVecteurDeString.get(index);
}
0
Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 1
14 mai 2008 à 10:10
waw ... j'aurais du faire 1 refresh avant de poster :)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Chatbour Messages postés 764 Date d'inscription jeudi 27 juillet 2006 Statut Membre Dernière intervention 6 septembre 2010 19
14 mai 2008 à 10:14
peut-être la photo de mariam1987
 
explique-t-elle une telle précipitation
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
14 mai 2008 à 10:16
Salut,

au passage dans le code que tu montres la variable 'c' n'est absolument pas utilisé tu pourrais directement faire :

public  vect() {
    for (int i = 0; i < titres.length; ++i)
      v.addElement(titres[i]);
}

de plus si tu peux utiliser une JVM >= 1.6 tu devrais utiliser la généricité pour ton vecteur :
  import java.util.Vector;
public class V ect {// en java une classe commence par une maj...
  private String [] titres ={"a","b","c","d"}; // c'est mieux de limiter la portée d'une variable
  <strike>//private String c= new String("");</strike>// pas utilisé
  private Vector<String> v = new Vector<String>();// tu ne pourras mettre autre choses que des String dans le vecteur

  public  Vect() {
    for (int i = 0; i < titres.length; ++i)
    v.add(titres[i]);
  } 
   
  public static void main(String args[]) {
    V ect t = new Vect();
     String s = t.v.get(2);// cast implicite
  }
   
}

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
0
cs_mariam1987 Messages postés 20 Date d'inscription vendredi 29 février 2008 Statut Membre Dernière intervention 21 août 2010
14 mai 2008 à 20:05
j'ai resolu le pb,j'ai ecrit:

import java.util.Vector;
  public class vect
  {
   String [] titres={"a","b","c","d"};
    Vector v= new Vector();




 public vect() {
    for (int i = 0; i < titres.length; ++i)
    { v.add(titres[i]);}
   }
   
  public static void main(String args[]) {
    vect t = new vect();
     System.out.println(t.v.get(2));
   }
 } 

la boucle a depassée la taille du tableau comme vous avez dit .
merci .
a+.
0
Rejoignez-nous