Java: Une exception parmi tant d'autres
Utilisateur anonyme
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
Je me suis mis il y a peu a la programmation en java
comme tout bon petit internaute, je me suis rendu sur le Site du zéro pour bien commencer
malheureusement, je suis bloqué, et un certain code refuse de fonctionner
Voici donc ma classe ville, dans laquelle il y a 3 paramètres simples, et un classement qui est attribué a chaque objet.
Malheureusement, je me prends une exception dans la tronche au niveau de la compilation !
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 7
at Ville.setClass(Ville.java:62)
at Ville.<init>(Ville.java:14)
at Main.main(Main.java:4)
(Ville.java:62 correspond a this.classement=classe[i]; dans ma methode setClasse() )
(Ville.java:14 correspond a this.setClass dans le constructeur Ville() )
(Main.java:4 correspond a l'initialisation de l'objet v1)
Où ai'je fauté ?
class Ville {
private char classement='O';
private String nomVille;
private String nomPays;
private int nbreHab;
public Ville(){
System.out.println("Création d'une ville !");
nomVille = "Inconnu";
nomPays = "Inconnu";
nbreHab = 0;
this.setClass();
}
public Ville(String pNom, int pHab, String pays){
System.out.println("Création d'une nouvelle ville avec des paramètres !");
nomVille=pNom;
nbreHab=pHab;
nomPays=pays;
this.setClass();
}
public String getNomVille() {
return nomVille;
}
public void setNomVille(String nomVille) {
this.nomVille = nomVille;
}
public String getNomPays() {
return nomPays;
}
public void setNomPays(String nomPays) {
this.nomPays = nomPays;
}
public int getNbreHab() {
return nbreHab;
}
public void setNbreHab(int nbreHab) {
this.nbreHab = nbreHab;
}
public char getClasse() {
return classement;
}
private void setClass(){
int tabClass[] = {10000000, 1000000, 100000, 10000, 1000, 100, 0,};
char classe[] = {'S','A','B','C','D','E','F'};
int i =0;
while (i<tabClass.length && this.nbreHab<=tabClass[i])
i++;
this.classement=classe[i];
}
public String getInfo(){
return "La ville "+this.getNomVille()+" située en "+this.getNomPays()
+" compte "+this.getNbreHab()+" habitants.\n Elle est donc de classe: "+this.getClasse()+".";
}
}
Merci a vou pour votre compréhension !
Je me suis mis il y a peu a la programmation en java
comme tout bon petit internaute, je me suis rendu sur le Site du zéro pour bien commencer
malheureusement, je suis bloqué, et un certain code refuse de fonctionner
Voici donc ma classe ville, dans laquelle il y a 3 paramètres simples, et un classement qui est attribué a chaque objet.
Malheureusement, je me prends une exception dans la tronche au niveau de la compilation !
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 7
at Ville.setClass(Ville.java:62)
at Ville.<init>(Ville.java:14)
at Main.main(Main.java:4)
(Ville.java:62 correspond a this.classement=classe[i]; dans ma methode setClasse() )
(Ville.java:14 correspond a this.setClass dans le constructeur Ville() )
(Main.java:4 correspond a l'initialisation de l'objet v1)
Où ai'je fauté ?
class Ville {
private char classement='O';
private String nomVille;
private String nomPays;
private int nbreHab;
public Ville(){
System.out.println("Création d'une ville !");
nomVille = "Inconnu";
nomPays = "Inconnu";
nbreHab = 0;
this.setClass();
}
public Ville(String pNom, int pHab, String pays){
System.out.println("Création d'une nouvelle ville avec des paramètres !");
nomVille=pNom;
nbreHab=pHab;
nomPays=pays;
this.setClass();
}
public String getNomVille() {
return nomVille;
}
public void setNomVille(String nomVille) {
this.nomVille = nomVille;
}
public String getNomPays() {
return nomPays;
}
public void setNomPays(String nomPays) {
this.nomPays = nomPays;
}
public int getNbreHab() {
return nbreHab;
}
public void setNbreHab(int nbreHab) {
this.nbreHab = nbreHab;
}
public char getClasse() {
return classement;
}
private void setClass(){
int tabClass[] = {10000000, 1000000, 100000, 10000, 1000, 100, 0,};
char classe[] = {'S','A','B','C','D','E','F'};
int i =0;
while (i<tabClass.length && this.nbreHab<=tabClass[i])
i++;
this.classement=classe[i];
}
public String getInfo(){
return "La ville "+this.getNomVille()+" située en "+this.getNomPays()
+" compte "+this.getNbreHab()+" habitants.\n Elle est donc de classe: "+this.getClasse()+".";
}
}
Merci a vou pour votre compréhension !
A voir également:
- Java: Une exception parmi tant d'autres
- Jeux java itel - Télécharger - Jeux vidéo
- Waptrick java football - Télécharger - Jeux vidéo
- Waptrick java voiture - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
- Eclipse java - Télécharger - Langages
3 réponses
ArrayIndexOutOfBoundsException n'est pas une erreur de compilation, mais d'exécution !
Cela signifie que tu essayes d'accéder à une case de tableau qui n'existe pas.
Ici tu fais this.classement=classe[i]; avec i=7, alors que classe.length==7, or les indices d'un tableau commencent à 0, et finissent donc à length-1 (ici de 0 à 6), donc à 7 ça plante
Tu devrais modifier la condition de ta boucle while pour prendre en compte la taille du tableau classe.
Cela signifie que tu essayes d'accéder à une case de tableau qui n'existe pas.
Ici tu fais this.classement=classe[i]; avec i=7, alors que classe.length==7, or les indices d'un tableau commencent à 0, et finissent donc à length-1 (ici de 0 à 6), donc à 7 ça plante
Tu devrais modifier la condition de ta boucle while pour prendre en compte la taille du tableau classe.
int max = Math.min(tabClass.length, classe.length-1);
int i=0;
while (i<max && this.nbreHab<=tabClass[i])
i++;
this.classement=classe[i];La confiance n'exclut pas le contrôle
Mihawk
Messages postés
4753
Statut
Contributeur
846
Et voilà un développeur qui, comme tous, s'est mangé cette exception un bon nombre de fois !
Salut,
(Ville.java:62 correspond a this.classement=classe[i]; dans ma methode setClasse() )
(Ville.java:14 correspond a this.setClass dans le constructeur Ville() )
(Main.java:4 correspond a l'initialisation de l'objet v1)
Ces 3 lignes sont à lire de la dernière à la premiere (de la 4 à la 62) et montrent le déroulement du programme la 62 étant celle qui provoque l'exception car i est à 7 et pointe donc sur le 8ème élément d'un tableau qui n'en comporte que 7 numérotes de 0 à 6.
Cordialement,
Dan
(Ville.java:62 correspond a this.classement=classe[i]; dans ma methode setClasse() )
(Ville.java:14 correspond a this.setClass dans le constructeur Ville() )
(Main.java:4 correspond a l'initialisation de l'objet v1)
Ces 3 lignes sont à lire de la dernière à la premiere (de la 4 à la 62) et montrent le déroulement du programme la 62 étant celle qui provoque l'exception car i est à 7 et pointe donc sur le 8ème élément d'un tableau qui n'en comporte que 7 numérotes de 0 à 6.
Cordialement,
Dan