Tableau en java
Résolu
RYME1983
Messages postés
3
Date d'inscription
Statut
Membre
Dernière intervention
-
KX Messages postés 19031 Statut Modérateur -
KX Messages postés 19031 Statut Modérateur -
Bonjour
Je suis débutante j ai créé une classe Traitement et dedans une méthode qui lit des valeurs de type String et les mettre dans un tableau , voici le code le problème je peux pas accéder au tableau , cependant si je mets la création de tableau dans la méthode ça marche , ???????????vous avez une idée de ce bug
Je suis débutante j ai créé une classe Traitement et dedans une méthode qui lit des valeurs de type String et les mettre dans un tableau , voici le code le problème je peux pas accéder au tableau , cependant si je mets la création de tableau dans la méthode ça marche , ???????????vous avez une idée de ce bug
public class Traitement {
int compt ;
int NbreVal ;
java.util.Scanner entree = new java.util.Scanner(System.in);
String tabV[] =new String[NbreVal];
Traitement (int NbreVal){
this.NbreVal=NbreVal;
}
public void LireValeur() {
System.out.println("Veuillez entrer les valeurs:");
for (compt=0;compt<NbreVal-1;compt++){
tabV[compt]=(entree.next());
}
entree.close();
}
1 réponse
-
Bonjour,
Lorsque tu créés ton tableauString tabV[] =new String[NbreVal];
quelle est la valeur de NbreVal ? La réponse c'est 0 puisque c'est la valeur par défaut quand tu faisint NbreVal;
, donc ton tableau tabV ne contient aucune case...
Si tu veux prendre en compte la taille NbreVal que tu utilises dans ton constructeur, alors il faut initialiser ton tableau à ce moment là, pas avant.
Remarques :
Pas besoin de déclarer nbreVal en attribut privé, sa valeur est porté par le tableau :tabV.length
.
De même pas besoin de déclarer compt dans la classe, c'est une variable locale à la méthode lireValeur.
Et attention : il ne faut jamais fermer System.in parce que tu ne pourras pas le réouvrir (donc pas deentree.close();
quand le Scanner porte sur System.in)
import java.util.Scanner; public class Traitement { private static final Scanner entree = new Scanner(System.in); private final String[] tabV; public Traitement(int nbreVal) { tabV = new String[nbreVal]; } public void lireValeur() { System.out.println("Veuillez entrer les "+tabV.length+" valeurs :"); for (int compt=0; compt<tabV.length; compt++) { tabV[compt] = entree.nextLine(); } }La confiance n'exclut pas le contrôle-
-
- C'est une mauvaise idée de la mettre globale, si tu t'en sers plusieurs fois, déclares là plusieurs fois, mais toujours le plus localement possible, on ne doit mettre en global que ce qui est transverse, c'est à dire que la valeur doit être stocké et transporté d'une méthode à une autre (comme le tableau), mais pour un compteur ça n'a aucun intérêt.
-