Erreur avec un constructeur/exception

sikove Messages postés 90 Date d'inscription lundi 17 mars 2008 Statut Membre Dernière intervention 31 mars 2010 - 26 avril 2008 à 22:27
indiana_jules Messages postés 750 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 23 décembre 2008 - 28 avril 2008 à 17:29
salut, j'ai un ptit probleme avec ce code :

cannot find symbol : constructor qsd(int,java.lang.String)
test=new qsd(1000,"ahghgh")

mon code :

*****class main*****

public class ass {
   
public static void main(String[] args){

qsd test=null;
try{            
test=new qsd(1000,"ahghgh");
System.out.println (test.ok());
}
catch (okException e){
    //e.getCause();
    System.out.println ("erreur " +e.getCause()+e.getMessage());
    test=new qsd();
    System.out.println (test.ok());
}
catch (opException a){
    //a.getCause();
    System.out.println ("erreur " +a.getCause()+a.getMessage());
    test=new qsd();
    System.out.println (test.ok());
}
    }
}

**** class qsd ****
class qsd {
private int nombre;
private String nom;
   
public qsd(){
nombre=0;
nom="amine";   
}
   
public qsd(int nombre,String nom) throws okException , opException
{
        if (nombre<0) throw new okException(nombre);
        if (nom.length()<3) throw new opException(nom);

             this.nom=nom;
             this.nombre=nombre;
       
}
       
public int ok(){
return this.nombre+" et "+this.nom;
}

}

***** exception *****
class okException extends Exception {
   
    public okException(int nbe)
    {
        System.out.println ("euh ?"+nbe);
    }
}

****

class opException extends Exception {
   
    public opException(String nm)
    {
        System.out.println ("euh ?"+nm);
    }
}

merci d'avance pour l'aide

3 réponses

minosubb Messages postés 31 Date d'inscription jeudi 24 avril 2008 Statut Membre Dernière intervention 24 septembre 2020
27 avril 2008 à 01:09
En effet, tu n'as pas mis de constructeur pour un (int + String)

rajoute apres ton constructeur publicqsd() :

public qsd(int i, String s)
{
    nombre = i;
    nom = s;   
}

Si jamais ta question est par rapport aux catch ecrits, je ne peux pas t'aider la dessus.

Minos
0
sikove Messages postés 90 Date d'inscription lundi 17 mars 2008 Statut Membre Dernière intervention 31 mars 2010
27 avril 2008 à 10:39
salut, merci de la réponse

pour le int+String je l'ai deja mis :

class qsd {
private int nombre;
private String nom;
   
public qsd(){
nombre=0;
nom="amine";   
}
   
public qsd(int nombre,String nom) throws okException , opException
{
        if (nombre<0) throw new okException(nombre);
        if (nom.length()<3) throw new opException(nom);

             this.nom=nom;
             this.nombre=nombre;
       
}
       
public int ok(){
return this.nombre+" et "+this.nom;
}

}

une idée ?
0
indiana_jules Messages postés 750 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 23 décembre 2008 22
28 avril 2008 à 17:29
Bonjour,
Cela peut venir de plusieurs problèmes. Tout d'abord, est-ce que ta classe "ass" (contenant le même) accéde bien à ta classe "qsd" (c'est-à-dire, si "qsd" ne fait pas partie du même package que "ass", existe-t-il une importation ?). Ensuite, laces-tu le programme depuis un jar ? Si oui, contient-il les fichiers .class de tes classes. Ensuite, as-tu bien pensé à regénerer tes .class (question idiote, mais qui faut la peine d'être posée), et finalement, as-tu généré tes .class (cf parenthéses précédentes) ?

A mes yeux, l'exception levé se rapproche d'un NoClassDefFound, autrement dit qu'il ne trouve pas la classe, et dans ton cas, il semblerait qu'il trouve la classe, mais pas le constructeur. Donc soit un mauvais classpath, soit une mauvaise génération.

Voili voilà

le monde a des idées : la preuve, c'est qu'il y en a de mauvaises
ne comprends pas tout, mais je parle de tout : c'est ce qui compte
0