Exception in thread "main" java.lang.ArrayIndexOutOfBoundsExcept
Résolu
khaledtotti
-
KX Messages postés 19031 Statut Modérateur -
KX Messages postés 19031 Statut Modérateur -
Bonjour,
j'ai un examen de tp cette semaine et j'ai un probleme avec un programme !!
dans ce programme il ya 4 classe
-la classe ouvrage ;
-la classe livre derivé de la classe ouvrage ;
-la classe bibliotheque qui contient un tableau de livre ;
-et la classe main
classe ouvrage :
package application;
import java.util.* ;
public class Ouvrage {
private String datem ;
private static int reference=100 ;
private boolean etat ;
private static int nbreo=0 ;
public Ouvrage (String x)
{reference ++ ;
nbreo ++ ;
etat=false ;
datem=x ;
}
public String getdate()
{return datem ;
}
public int getref()
{return reference ;
}
public boolean getetat()
{return etat ;
}
public int getnbre()
{return nbreo ;
}
public void setdate (String s)
{datem=s ;
}
public void setetat (boolean s)
{etat=s ;
}
public void setref (int s)
{reference=s ;
}
public void setnbre (int s)
{nbreo=s ;
}
public void afficher()
{System.out.println(etat) ;
System.out.println(reference) ;
System.out.println(nbreo) ;
System.out.println(datem) ;
}
classe livre
package application;
import java.util.* ;
/**
*
* @author khaled
*/
public class livre extends Ouvrage {
private String auteur ;
private String titre ;
private String editeur ;
private int nbrep ;
public livre(String c,String d ,String t,String e , int z)
{super(c);
auteur=d ;
titre=t ;
editeur=e ;
nbrep=z ;
}
public String gettitre()
{return titre ;
}
public String getauteur()
{return auteur ;
}
public int getnbpage()
{return nbrep ;
}
public String getediteur()
{return editeur ;
}
public void settitre(String s)
{titre=s ;
}
public void setauteur(String s)
{auteur=s ;
}
public void setediteur(String s)
{titre=s ;
}
public void setnbrep(int s)
{nbrep=s ;
}
public void afficher()
{super.afficher() ;
System.out.println(titre);
System.out.println(auteur);
System.out.println(editeur);
System.out.println(nbrep);
}
}
class bibliotheque
package application;
import java.util.* ;
/**
*
* @author khaled
*/
public class bibliotheque {
private int indice;
private int n ;
private livre[] tab=new livre[n] ;
public bibliotheque(int x)
{n=x;
indice=0;}
public void ajout(livre l)
{if (indice<n)
{tab[indice]= l ;
indice++ ;}
else System.out.print("erreur");
}
public void supr(int ref)
{int s = -1 ;
for (int i=0;i<n;i++)
if (tab[i].getref()==ref)
s = i ;
if (s!=-1)
for (int i=s ;i<n-1 ;i++)
{tab[i]=tab[i+1];
}
n=n-1 ;
}
public void affiche()
{for (int i=0 ; i<n;i++)
tab[i].afficher();
}
public void emprunt(String titre , String date)
{for (int i=0 ;i<n;i++)
{if(tab[i].gettitre()==titre)
{if (tab[i].getetat()==false)
{ tab[i].setetat(true);
tab[i].setdate(date);
}
} } }
public void retour(String titre)
{for (int i=0 ;i<n;i++)
{if((tab[i].gettitre()==titre)&&(tab[i].getetat()==false))
tab[i].setetat(true);
}
}
}
class main
package application;
import java.util.* ;
/**
*
* @author khaled
*/
public class main {
public static void main(String[] args) {
bibliotheque x ;
x=new bibliotheque(6);
livre a;
a = new livre("khaled","asd","adas","qsd",6);
x.ajout(a);
}}
aidez moi SVP !!!
j'ai un examen de tp cette semaine et j'ai un probleme avec un programme !!
dans ce programme il ya 4 classe
-la classe ouvrage ;
-la classe livre derivé de la classe ouvrage ;
-la classe bibliotheque qui contient un tableau de livre ;
-et la classe main
classe ouvrage :
package application;
import java.util.* ;
public class Ouvrage {
private String datem ;
private static int reference=100 ;
private boolean etat ;
private static int nbreo=0 ;
public Ouvrage (String x)
{reference ++ ;
nbreo ++ ;
etat=false ;
datem=x ;
}
public String getdate()
{return datem ;
}
public int getref()
{return reference ;
}
public boolean getetat()
{return etat ;
}
public int getnbre()
{return nbreo ;
}
public void setdate (String s)
{datem=s ;
}
public void setetat (boolean s)
{etat=s ;
}
public void setref (int s)
{reference=s ;
}
public void setnbre (int s)
{nbreo=s ;
}
public void afficher()
{System.out.println(etat) ;
System.out.println(reference) ;
System.out.println(nbreo) ;
System.out.println(datem) ;
}
classe livre
package application;
import java.util.* ;
/**
*
* @author khaled
*/
public class livre extends Ouvrage {
private String auteur ;
private String titre ;
private String editeur ;
private int nbrep ;
public livre(String c,String d ,String t,String e , int z)
{super(c);
auteur=d ;
titre=t ;
editeur=e ;
nbrep=z ;
}
public String gettitre()
{return titre ;
}
public String getauteur()
{return auteur ;
}
public int getnbpage()
{return nbrep ;
}
public String getediteur()
{return editeur ;
}
public void settitre(String s)
{titre=s ;
}
public void setauteur(String s)
{auteur=s ;
}
public void setediteur(String s)
{titre=s ;
}
public void setnbrep(int s)
{nbrep=s ;
}
public void afficher()
{super.afficher() ;
System.out.println(titre);
System.out.println(auteur);
System.out.println(editeur);
System.out.println(nbrep);
}
}
class bibliotheque
package application;
import java.util.* ;
/**
*
* @author khaled
*/
public class bibliotheque {
private int indice;
private int n ;
private livre[] tab=new livre[n] ;
public bibliotheque(int x)
{n=x;
indice=0;}
public void ajout(livre l)
{if (indice<n)
{tab[indice]= l ;
indice++ ;}
else System.out.print("erreur");
}
public void supr(int ref)
{int s = -1 ;
for (int i=0;i<n;i++)
if (tab[i].getref()==ref)
s = i ;
if (s!=-1)
for (int i=s ;i<n-1 ;i++)
{tab[i]=tab[i+1];
}
n=n-1 ;
}
public void affiche()
{for (int i=0 ; i<n;i++)
tab[i].afficher();
}
public void emprunt(String titre , String date)
{for (int i=0 ;i<n;i++)
{if(tab[i].gettitre()==titre)
{if (tab[i].getetat()==false)
{ tab[i].setetat(true);
tab[i].setdate(date);
}
} } }
public void retour(String titre)
{for (int i=0 ;i<n;i++)
{if((tab[i].gettitre()==titre)&&(tab[i].getetat()==false))
tab[i].setetat(true);
}
}
}
class main
package application;
import java.util.* ;
/**
*
* @author khaled
*/
public class main {
public static void main(String[] args) {
bibliotheque x ;
x=new bibliotheque(6);
livre a;
a = new livre("khaled","asd","adas","qsd",6);
x.ajout(a);
}}
aidez moi SVP !!!
A voir également:
- Exception in thread "main" java.lang.ArrayIndexOutOfBoundsExcept
- Deco in paris avis ✓ - Forum Consommation & Internet
- Aux in ✓ - Forum Enceintes / HiFi
- Navigation in private - Guide
- Peut-on brancher un casque sur une prise auxiliaire ? - Forum Casque et écouteurs
- Dc in - Forum Disque dur / SSD
2 réponses
1) N'appelle pas ta classe "main", d'une part parce que normalement les noms de classe commencent par une majuscule (la remarque est donc valable pour tes autres classes), mais surtout parce ta méthode "main" aurait le même nom qu'un constructeur de la classe "main" ce qui n'est pas correct.
2) Tes import java.util.* sont tous inutiles puisque tu ne te sers jamais d'aucune classe de ce package...
3) Enfin, pour en revenir à ton ArrayIndexOutOfBoundsException, tu essayes de faire "tab[indice]=l" dans la méthode ajout de ta bibliothèque, mais ton tableau est de taille 0, car tu as fait sa déclaration comme ceci :
Il faudrait donc corriger la manière dont tu alloues la taille de ton tableau, parce que si tu modifies n après, ça ne modifieras pas automatiquement la taille de ton tableau !
Par exemple :
2) Tes import java.util.* sont tous inutiles puisque tu ne te sers jamais d'aucune classe de ce package...
3) Enfin, pour en revenir à ton ArrayIndexOutOfBoundsException, tu essayes de faire "tab[indice]=l" dans la méthode ajout de ta bibliothèque, mais ton tableau est de taille 0, car tu as fait sa déclaration comme ceci :
private int n; // 0 par défaut private livre[] tab=new livre[n]; // le tableau est de taille 0
Il faudrait donc corriger la manière dont tu alloues la taille de ton tableau, parce que si tu modifies n après, ça ne modifieras pas automatiquement la taille de ton tableau !
Par exemple :
public bibliotheque(int x)
{
n = x;
tab = new livre[x];
indice = 0;
}