Probleme de stacktrace [/noob inside]

Probleme de stacktrace [/noob inside] - Java - Programmation

Marsh Posté le 15-06-2006 à 00:43:18    

Bonsoir :hello: ,  
 
je commence dans l'univers Java, donc soyez clément  :sweat: (ortho  :heink: )
Voila mon probleme, j'ai une erreur que l'on appelle stacktrace (j'ai vite fai vu sa dans le tuto). c'est la suivante :
java.lang.ArrayIndexOutOfBoundsException
 
Il me semble qu'elle concerne les vecteur non? pouvez vous m'en dire plus ? Je reste bloqué la depuis trop lontemps...  
Merci

Reply

Marsh Posté le 15-06-2006 à 00:43:18   

Reply

Marsh Posté le 15-06-2006 à 01:16:12    

Ca concerne plutot un tableau ("Array" ) mais il faudrait voir le code.


---------------
TReVoR - http://dev.arqendra.net - http://info.arqendra.net
Reply

Marsh Posté le 15-06-2006 à 02:09:45    

Un tableau ?  :heink:  
 
Voici le code :  
 
 
import java.awt.*;
import java.util.*;
import javax.swing.*;
import gtr.individu.*;
import java.lang.String;
import java.io.*;
 
/**
 *
 * @author  Admin
 */
public class JdialogClient extends javax.swing.JDialog {
     
    private Vector<Individu> client = new Vector<Individu>();
    private String nom = new String("PECHEUX" );
    /** Creates new form JdialogClient */
    public JdialogClient(java.awt.Frame parent, boolean modal)  
 
    {
        super(parent, modal);
        initComponents();
         
        this.radLoc.setSelected(true);
        this.panLoc.setVisible(true);
        this.radAchat.setSelected(false);
        this.panAchat.setVisible(false);
         
        int i= posVect();
        System.out.println(client.get(i).getNom());
        System.out.println(client.get(i).getPrenom());

    }
 
 
...
 
 
    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new JdialogClient(new javax.swing.JFrame(), true).setVisible(true);
            }
        });
    }
     
    int posVect(){
        int tempo=0;
        int  i=0;
        while (i<client.size()){
            String indi = new String(client.get(i).getNom());
            if (nom.equals(indi)==true){
                tempo = i;
            }else{
                i++;
            }    
        }
        System.out.println("vrai :"+client.get(2).getNom());
        System.out.println("vrai :" + client.get(2).getPrenom());

        return tempo;
    }
 
 
En gras les lignes où je sousponne les erreurs...


Message édité par sebus--74 le 15-06-2006 à 02:11:02
Reply

Marsh Posté le 15-06-2006 à 02:26:20    

La stack Trace te donne la ligne où est l'erreur normalement...


---------------
my flick r - Just Tab it !
Reply

Marsh Posté le 15-06-2006 à 09:22:04    

Infos en vrac :
 
 - Une stacktrace est composée de plusieures lignes et se lit de haut en bas. En remontant la stacktrace, tu va tomber sur une ligne indiquant une de tes classes avec un numéro de ligne, c'est là qu'il faut regarder pour comprendre l'erreur.
 
 - new String("PECHEUX" ), c'est inutile et absurde, remplace par :
     private String nom = "PECHEUX"; // tout simplement
   de même  
     String indi = client.get(i).getNom();
 
   d'une façon générale il ne faut jamais utiliser le constructeur new String(uneString) car les string sont des objets immuables
 
 - remplace  

Code :
  1. if (nom.equals(indi)==true){
  2.   tempo = i;
  3.   // si on arrive ici, on tombe dans une boucle infinie
  4.   // car i n'évolue pas ...
  5. } else {
  6.   i++;
  7. }


 
   par

Code :
  1. if (nom.equals(indi)){
  2.   return i;
  3.   /* ou bien
  4.   tempo = i;
  5.   break; */
  6. } else {
  7.   i++
  8. }


 
 - l'erreur vient surement de client.get(2) s'il n'y a moins de 2 éléments
   car les indices vont de 0 à size -1

Reply

Marsh Posté le 15-06-2006 à 10:46:10    

On sait pas non plus la structure de Individu...

Reply

Marsh Posté le 15-06-2006 à 13:32:49    

Citation :

Ca concerne plutot un tableau ("Array" ) mais il faudrait voir le code.


 
Sissi, ça peut être les Vector (c'est l'exception que ça lance en cas de problème d'indice)
 

Citation :

On sait pas non plus la structure de Individu...


 
On peut imaginer que getNom() et getPrenom() vont retourner une String donnant le nom et le prénom d'une personne :p

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed