Tableau en java
Résolu
RYME1983
Messages postés
3
Date d'inscription
Statut
Membre
Dernière intervention
-
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
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
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - 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