Tableau en java
Résolu
RYME1983
Messages postés
3
Statut
Membre
-
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();
}
A voir également:
- Tableau en java
- Jeux java itel - Télécharger - Jeux vidéo
- Waptrick java football - Télécharger - Jeux vidéo
- Tableau word - Guide
- Tableau ascii - Guide
- Trier un tableau excel - Guide
1 réponse
Bonjour,
Lorsque tu créés ton tableau
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 :
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 de
Lorsque tu créés ton tableau
String 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 fais
int 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 de
entree.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 bon le problème est réglé , je vous remercie , a mes connaissance le constructeur va modifier la valeur de NbrVal la je comprends les attributs exécutent avant le constructeur , la création de tableau avec l indice 0 passe avant le constructeur . Merci beaucoup