Retourner valeurs tableau classe en java
Résolu/Fermé
montdorchaud
Messages postés
13
Date d'inscription
vendredi 8 août 2008
Statut
Membre
Dernière intervention
21 mai 2010
-
8 août 2008 à 22:54
Utilisateur anonyme - 19 déc. 2010 à 10:11
Utilisateur anonyme - 19 déc. 2010 à 10:11
A voir également:
- Retourner un tableau en java
- Tableau croisé dynamique - Guide
- Waptrick java football - Télécharger - Jeux vidéo
- Retourner ecran windows - Guide
- Jeux java itel football - Télécharger - Jeux vidéo
- Tableau ascii - Guide
8 réponses
Utilisateur anonyme
19 déc. 2010 à 10:11
19 déc. 2010 à 10:11
Salut khalida,
J'ai modifié légèrement le code de mondorchaud:
-le nom de la classe cFichiers >>>> CFichiers pour respecter les conventions d'écriture
-le nom du tableau tab[] >>>> scoresDuJoueur[] (c'est plus "parlant")
-pour que ce soit compilable, j'ai ajouté les imports
Le code proprement dit est strictement celui de mondorchaud (sauf l'ajout des imports)
Pour tester, il faut céer le fichier à lire (Scores.txt) par exemple avec le bloc note
La méthode readlign(String Nomfichier, int Nombrelignes) de la classe CFihiers étant static:
- Depuis la méthode main(...) du programme utilisateur (ou de toute autre méthode static) voici comment on récupère le tableau
Cordialement,
Dan
J'ai modifié légèrement le code de mondorchaud:
-le nom de la classe cFichiers >>>> CFichiers pour respecter les conventions d'écriture
-le nom du tableau tab[] >>>> scoresDuJoueur[] (c'est plus "parlant")
-pour que ce soit compilable, j'ai ajouté les imports
Le code proprement dit est strictement celui de mondorchaud (sauf l'ajout des imports)
import java.io.FileReader; import java.io.BufferedReader; import java.io.IOException; public class CFichiers { static int [] readlign(String Nomfichier, int Nombrelignes) { FileReader monFichier = null; BufferedReader tampon = null; int scoresDuJoueur[]; scoresDuJoueur = new int [Nombrelignes]; int i=0; try { monFichier = new FileReader(Nomfichier); tampon = new BufferedReader(monFichier); while (i<Nombrelignes) { // Lit une ligne de scores.txt String ligne = tampon.readLine(); try { scoresDuJoueur[i] = Integer.parseInt(ligne); } catch (NumberFormatException f) { System.err.println("Erreur! - Fichier de données non numérique -"); } i++; // Vérifie la fin de fichier if (ligne == null) { if(i==Nombrelignes) { System.out.println("Lecture fichier terminée"); break; } else System.out.println("Erreur! - Problème lecture -"); } } // Fin du while } catch (IOException exception) { exception.printStackTrace(); } finally { try { tampon.close(); monFichier.close(); } catch(IOException exception1) { exception1.printStackTrace(); } } return scoresDuJoueur; } }
Pour tester, il faut céer le fichier à lire (Scores.txt) par exemple avec le bloc note
La méthode readlign(String Nomfichier, int Nombrelignes) de la classe CFihiers étant static:
- Depuis la méthode main(...) du programme utilisateur (ou de toute autre méthode static) voici comment on récupère le tableau
String NomFic = "Scores2.txt"; int nombreScores = 10; // correspondant au nombre de lignes du fichier Scores2.txt int[] scoresJoueur = new int[nombreScores]; scoresJoueur = CFichiers.readlign(NomFic, nombreScores); //Le résultat: for(int i = 0; i < scoresJoueur.length; i++) System.out.println("score" + (i +1) + ": \t" + scoresJoueur[i]);
Cordialement,
Dan
el_linwin
Messages postés
521
Date d'inscription
vendredi 25 juillet 2008
Statut
Membre
Dernière intervention
16 août 2008
90
9 août 2008 à 10:24
9 août 2008 à 10:24
Bonjour montdorchaud,
C'est normal que vous ayez une erreur à la ligne: int ligne = tampon.readLine();
Car la méthode readLine(); renvoie un String, pas un int !
Il vous faudrait écrire:
String ligne = tampon.readLine();
et, si vous souhaitez récupérer un tableau de caractères:
Tablechar = ligne.toCharArray();
Tablechar ayant été défini par: char Tablechar[] = new char[la_longueur];
Cordialement,
el_linwin
C'est normal que vous ayez une erreur à la ligne: int ligne = tampon.readLine();
Car la méthode readLine(); renvoie un String, pas un int !
Il vous faudrait écrire:
String ligne = tampon.readLine();
et, si vous souhaitez récupérer un tableau de caractères:
Tablechar = ligne.toCharArray();
Tablechar ayant été défini par: char Tablechar[] = new char[la_longueur];
Cordialement,
el_linwin
montdorchaud
Messages postés
13
Date d'inscription
vendredi 8 août 2008
Statut
Membre
Dernière intervention
21 mai 2010
4
12 août 2008 à 10:06
12 août 2008 à 10:06
C'est bon j'ai résolu mon problème de tableau tout seul comme un grand.
En tout cas merci.
Pour ceux que ça intéresse je met à disposition le petit bout de programme :
public class cFichiers {
static int [] readlign(String Nomfichier, int Nombrelignes) {
FileReader monFichier = null;
BufferedReader tampon = null;
int tab[];
tab = new int [Nombrelignes];
int i=0;
try {
monFichier = new FileReader(Nomfichier);
tampon = new BufferedReader(monFichier);
while (i<Nombrelignes) {
// Lit une ligne de scores.txt
String ligne = tampon.readLine();
try
{
tab[i] = Integer.parseInt(ligne);
}
catch (NumberFormatException f)
{
System.err.println("Erreur! - Fichier de données non numérique -");
}
i++;
// Vérifie la fin de fichier
if (ligne == null){
if(i==Nombrelignes)
{
System.out.println("Lecture fichier terminée");
break;
}
else
System.out.println("Erreur! - Problème lecture -");
}
} // Fin du while
}
catch (IOException exception) {
exception.printStackTrace();
}
finally {
try {
tampon.close();
monFichier.close();
}
catch(IOException exception1) {
exception1.printStackTrace();
}
}
return tab;
}
}
En tout cas merci.
Pour ceux que ça intéresse je met à disposition le petit bout de programme :
public class cFichiers {
static int [] readlign(String Nomfichier, int Nombrelignes) {
FileReader monFichier = null;
BufferedReader tampon = null;
int tab[];
tab = new int [Nombrelignes];
int i=0;
try {
monFichier = new FileReader(Nomfichier);
tampon = new BufferedReader(monFichier);
while (i<Nombrelignes) {
// Lit une ligne de scores.txt
String ligne = tampon.readLine();
try
{
tab[i] = Integer.parseInt(ligne);
}
catch (NumberFormatException f)
{
System.err.println("Erreur! - Fichier de données non numérique -");
}
i++;
// Vérifie la fin de fichier
if (ligne == null){
if(i==Nombrelignes)
{
System.out.println("Lecture fichier terminée");
break;
}
else
System.out.println("Erreur! - Problème lecture -");
}
} // Fin du while
}
catch (IOException exception) {
exception.printStackTrace();
}
finally {
try {
tampon.close();
monFichier.close();
}
catch(IOException exception1) {
exception1.printStackTrace();
}
}
return tab;
}
}
montdorchaud
Messages postés
13
Date d'inscription
vendredi 8 août 2008
Statut
Membre
Dernière intervention
21 mai 2010
4
11 août 2008 à 10:10
11 août 2008 à 10:10
Merci pour la réponse, mais en fait je voudrai faire la même chose mais pour des nombres, au lieu des chaînes de caractères. Quelles instructions dois-je utiliser? Car pour l'instant j'ai rien trouvé sur le net...
Et concernant le tableau, je voulais savoir comment récupérer dans un tableau dans mon programme principal les valeurs lu grâce à cette classe écrite ci-dessus.
Merci encore
Et concernant le tableau, je voulais savoir comment récupérer dans un tableau dans mon programme principal les valeurs lu grâce à cette classe écrite ci-dessus.
Merci encore
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Utilisateur anonyme
11 août 2008 à 20:43
11 août 2008 à 20:43
Salut.
Une petite precision : Quelle est la strucrure des lignes de ton fichier ? Un score ou plus par ligne ?
Y-a t'il aussi un num. de joueur, si oui plusieurs scores par joueur ? etc ...
J'attend ta reponse avant de poursuivre.
Cordialement,
Dan
Une petite precision : Quelle est la strucrure des lignes de ton fichier ? Un score ou plus par ligne ?
Y-a t'il aussi un num. de joueur, si oui plusieurs scores par joueur ? etc ...
J'attend ta reponse avant de poursuivre.
Cordialement,
Dan
montdorchaud
Messages postés
13
Date d'inscription
vendredi 8 août 2008
Statut
Membre
Dernière intervention
21 mai 2010
4
11 août 2008 à 20:58
11 août 2008 à 20:58
Salut Dan,
En fait il y a seulement un score par ligne et un seul joueur (c'est donc le cas le plus simple).
Sinon, je me suis relu et je sais pas si j'ai été très clair. Je reprise donc pour être sûr:
- dans la ligne int ligne = tampon.readLine(); que dois-je mettre comme instruction pour lire un int
- quel instructions dois-je mettre dans la classe que j'ai appelé "cFichiers" et dans mon programme principal pour pouvoir sortir un tableau dans lequel chaque case correspond à une ligne du fichier
Merci
En fait il y a seulement un score par ligne et un seul joueur (c'est donc le cas le plus simple).
Sinon, je me suis relu et je sais pas si j'ai été très clair. Je reprise donc pour être sûr:
- dans la ligne int ligne = tampon.readLine(); que dois-je mettre comme instruction pour lire un int
- quel instructions dois-je mettre dans la classe que j'ai appelé "cFichiers" et dans mon programme principal pour pouvoir sortir un tableau dans lequel chaque case correspond à une ligne du fichier
Merci
Utilisateur anonyme
11 août 2008 à 21:29
11 août 2008 à 21:29
Re,
C'est mieux ainsi.
La reponse de el_linwin est correcte, pas d'int mais ce n'est pas un probleme, il te suffit de verifier si le contenu de la ligne est bien numerique , si oui tu la recupere dans un int si non catch:
int ligneI = 0;
try
{
ligneI = Integer.parseInt(ligne); // si non num. >>> exception
}
catch (NumberFormatException f)
{
............................
}
// tu disposes de la ligne dans ligne ligneI
Cordialement,
Dan
C'est mieux ainsi.
La reponse de el_linwin est correcte, pas d'int mais ce n'est pas un probleme, il te suffit de verifier si le contenu de la ligne est bien numerique , si oui tu la recupere dans un int si non catch:
int ligneI = 0;
try
{
ligneI = Integer.parseInt(ligne); // si non num. >>> exception
}
catch (NumberFormatException f)
{
............................
}
// tu disposes de la ligne dans ligne ligneI
Cordialement,
Dan
montdorchaud
Messages postés
13
Date d'inscription
vendredi 8 août 2008
Statut
Membre
Dernière intervention
21 mai 2010
4
12 août 2008 à 00:11
12 août 2008 à 00:11
Ok merci pour la réponse. Il me reste maintenant à savoir comment retourner les valeurs contenu dans le tableau "tab". Pour être plus explicite je vous met la méthode readlign revue et corrigé avec le "return tab[]" incorrect à la fin pour vous montrer exactement ce que je veux faire.
static int readlign(String Nomfichier, int Nombrelignes) {
FileReader monFichier = null;
BufferedReader tampon = null;
int tab[];
tab = new int [Nombrelignes];
int i=0;
try {
monFichier = new FileReader(Nomfichier);
tampon = new BufferedReader(monFichier);
while (i<Nombrelignes) {
// Lit une ligne de scores.txt
String ligne = tampon.readLine();
try
{
tab[i] = Integer.parseInt(ligne);
}
catch (NumberFormatException f)
{
System.err.println("Erreur! - Fichier de données non numérique -");
}
i++;
// Vérifie la fin de fichier
if (ligne == null && i==Nombrelignes){
System.out.println("Lecture fichier terminée");
break;
}
else
System.out.println("Erreur! - Problème lecture -");
} // Fin du while
}
catch (IOException exception) {
exception.printStackTrace();
}
finally {
try {
tampon.close();
monFichier.close();
}
catch(IOException exception1) {
exception1.printStackTrace();
}
}
return tab[];
}
Question subsidiaire : dans une classe, est-ce que les variables déclarées à l'intérieur sont par la suite libérées, lorsque le programme principal à finit de solliciter la classe en question?
static int readlign(String Nomfichier, int Nombrelignes) {
FileReader monFichier = null;
BufferedReader tampon = null;
int tab[];
tab = new int [Nombrelignes];
int i=0;
try {
monFichier = new FileReader(Nomfichier);
tampon = new BufferedReader(monFichier);
while (i<Nombrelignes) {
// Lit une ligne de scores.txt
String ligne = tampon.readLine();
try
{
tab[i] = Integer.parseInt(ligne);
}
catch (NumberFormatException f)
{
System.err.println("Erreur! - Fichier de données non numérique -");
}
i++;
// Vérifie la fin de fichier
if (ligne == null && i==Nombrelignes){
System.out.println("Lecture fichier terminée");
break;
}
else
System.out.println("Erreur! - Problème lecture -");
} // Fin du while
}
catch (IOException exception) {
exception.printStackTrace();
}
finally {
try {
tampon.close();
monFichier.close();
}
catch(IOException exception1) {
exception1.printStackTrace();
}
}
return tab[];
}
Question subsidiaire : dans une classe, est-ce que les variables déclarées à l'intérieur sont par la suite libérées, lorsque le programme principal à finit de solliciter la classe en question?