Exception java

Résolu
cs_horka Messages postés 30 Date d'inscription mardi 21 juin 2011 Statut Membre Dernière intervention 4 avril 2012 - 2 août 2011 à 14:10
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 - 5 août 2011 à 09:13
Bonsoir tout le monde,
J'ai rencontré l'exception suivante dans l'exécution de mon programme:
java.lang.ArrayIndexOutOfBoundsException
Est ce quelqu’un peut m'aider merci d'avance

16 réponses

cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
2 août 2011 à 19:33
Comment lances tu ton programme ?

Il n'y a pas d'argument passé à la méthode main, normal que l'erreur soir levée.
3
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
3 août 2011 à 08:30
Quand tu lances ton programme depuis une console, il suffit de mettre le paramètre quand tu lances en ligne de commande :
java -jar programme.jar param1


Je te déconseilles néanmoins ce fonctionnement, il est préférable de mettre un attribut dans ta classe
3
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
3 août 2011 à 09:44
Bonjour,

Depuis eclipse, il te suffit d'aller dans run&debug settings, t'as une case pour les arguments à donner au main.

Cordialement,

Maxime
3
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
2 août 2011 à 15:01
Bonjour,

Tu essayes de récupérer un index qui est en dehors de la plage des valeurs d'un tableau. Tu dois faire un truc du genre :

String[] tableau = new String[3];
System.out.println(tableau[10]);
0

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

Posez votre question
Utilisateur anonyme
2 août 2011 à 18:38
Bonjour,

Noter qu'en "catchant" l'exception et en utilisant xxx.printStackTrace(); on obtient le n° de la ligne du code qui provoque la levée de l'exception.

Cordialement,


...\ Dan /...
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
2 août 2011 à 18:45
En général, c'est assez simple à corriger, si tu n'y arrives pas, montre nous ton code et on te dira ce qui ne va pas.
0
cs_horka Messages postés 30 Date d'inscription mardi 21 juin 2011 Statut Membre Dernière intervention 4 avril 2012
2 août 2011 à 19:04
Bonsoir,
Je suis en train de réaliser une application qui fait le parcours d'une dtd d'un document xml.le code est le suivant:
package dtd;

import java.io.*;

class Tokenize
{
public static void main(String[] args)
{
try
{
DTDParser_New1 parser = null;
// MAW Version 1.17
// If it looks like the filename may be a URL, use the URL class
if (args[0].indexOf("://") > 0)// l'exception déjà cité se manifeste ici
{
parser = new DTDParser_New1(new URL(args[0]), true);
}
else
{
parser = new DTDParser_New1(new File(args[0]), true);
}

// Parse the DTD and ask the parser to guess the root element
DTD dtd = parser.parse(true);

if (dtd.rootElement != null)
{
System.out.println("Root element is probably: "+
dtd.rootElement.name);
}

Enumeration e = dtd.elements.elements();

while (e.hasMoreElements())
{
DTDElement elem = (DTDElement) e.nextElement();

System.out.println("Element: "+elem.name);
System.out.print(" Content: ");
dumpDTDItem(elem.content);
System.out.println();

if (elem.attributes.size() > 0)
{
System.out.println(" Attributes: ");
Enumeration attrs = elem.attributes.elements();
while (attrs.hasMoreElements())
{
System.out.print(" ");
DTDAttribute attr = (DTDAttribute) attrs.nextElement();
dumpAttribute(attr);
}
System.out.println();
}
}
0
cs_horka Messages postés 30 Date d'inscription mardi 21 juin 2011 Statut Membre Dernière intervention 4 avril 2012
2 août 2011 à 22:48
Bonsoir,
Alors connaissez vous comment passez l'argument dans main.Merci d'avance.
0
cs_horka Messages postés 30 Date d'inscription mardi 21 juin 2011 Statut Membre Dernière intervention 4 avril 2012
3 août 2011 à 18:19
Bonsoir tout le monde,
j'utilise eclipse galileo.
j'ai essayé de trouver la case dans laquelle je peux donner les arguments au main mais je ne la retrouve pas.Dans le menu run juste il y'a run,debug,run as,debug as,run configuration,debug configuration.
Comment dans ce cas je peut donner les paramètres de la classe principale?

Cordialement
Haithem
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
4 août 2011 à 09:04
clique droit sur le projet
propriétés
run & debug settings
0
cs_horka Messages postés 30 Date d'inscription mardi 21 juin 2011 Statut Membre Dernière intervention 4 avril 2012
4 août 2011 à 18:12
Bonsoir tout le monde,
Bonsoir coucou747,
Je vous remercie beaucoup pour votre proposition.
J'ai trouvé une solution pour l'exception déjà cité.
Mais une nouvelle exception est levée à savoir :

?java.lang.ClassCastException: dtd.DTDPCData cannot be cast to dtd.DTDItem
at dtd.DTDParser_New1.parse(DTDParser_New1.java:147)
at dtd.Tokenize.main(Tokenize.java:32)

Au niveau de la classe DTDParser_New1,l'instruction qui provoque l'exception est:
while (items.hasMoreElements())
{
removeElements(roots, dtd, (DTDItem) items.nextElement());
}
}

Au niveau de la classe Tokenize ,l'instruction qui provoque l'exception est:
// Parse the DTD and ask the parser to guess the root element
DTD dtd = parser.parse(true);

if (dtd.rootElement != null)
{
System.out.println("Root element is probably: "+
dtd.rootElement.name);
}
Est ce que vous pouvez me dire comment cette fois je peux corriger l'erreur et merci d'avance.
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
4 août 2011 à 18:16
C'est une erreur totalement différente...

(DTDItem) items.nextElement()

il semble que la valeur ne soit pas du bon type.

Essaie de l'afficher ou de voir d'ou elle vient...
0
cs_horka Messages postés 30 Date d'inscription mardi 21 juin 2011 Statut Membre Dernière intervention 4 avril 2012
4 août 2011 à 18:30
Mais comment?
Est ce que je dois éliminer le casting sur items ou non?
0
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
4 août 2011 à 22:54
salut
cette erreur parle d elle meme ... tu n a tout simplement pas le type d objot attendu ... revois ton traitement... ou test la caste avant de caster ton objet...

GodConan ;o)
0
cs_horka Messages postés 30 Date d'inscription mardi 21 juin 2011 Statut Membre Dernière intervention 4 avril 2012
5 août 2011 à 01:14
Bonsoir tout le monde,
Bonsoir GodConan,
S'il vous plait essayez de m'expliquer d'avance comment tester la caste avant de caster
l'objet.Je n'ai rien compris ce que vous dises.Je suis débutant et j'espère que vous m’expliquez les choses pas à pas.Merci d'avance
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
5 août 2011 à 09:13
Pour savoir si tu peux caster un objet en in autre, tu peux utiliser instanceof

String s ="12";
Intger i =0;
if(s instanceof Integer){
   System.out.println("entier");
   i = (Integer)s;
}
else {
   System.out.println("non entier");
}
0
Rejoignez-nous