我试图读取并将.txt文件的每一行转换为矢量格式。似乎我的信息正在被转换,因为vectPers.size()
给了我21,这是我拥有的人数。
问题是,当我尝试打印矢量时,它会一直显示这些占据21人的奇怪线条
Personne@15db9742
Personne@6d06d69c
Personne@7852e922
Personne@4e25154f
Personne@70dea4e
Personne@5c647e05
Personne@33909752
Personne@55f96302
Personne@3d4eac69
Personne@42a57993
Personne@75b84c92
Personne@6bc7c054
Personne@232204a1
Personne@4aa298b7
Personne@7d4991ad
Personne@28d93b30
Personne@1b6d3586
Personne@4554617c
Personne@74a14482
Personne@1540e19d
Personne@677327b6
到目前为止,这是我的代码:
import java.io.*;
import java.util.Vector;
class Personne
{
private String nomPre ;
private double taille, poids;
private char sexe ;
private int numero;
public Personne( String nomPre, char sexe, double taille, double poids, int numero) {
this.nomPre = nomPre ;
this.sexe = sexe;
this.taille = taille ;
this.poids = poids;
this.numero = numero;
}
public double getTaille() { return taille; }
public double getPoids() {return poids; }
public String getNomPre() { return nomPre; }
public char getSexe() { return sexe ; }
public int getNumero() { return numero; }
public void afficher()
{
System.out.printf("%5d %30s %6.2f %7.1f %s\n",
numero, nomPre, taille, poids, sexe == 'F' ? "feminin":"masculin");
}
}
public class numero3
{
static int lireAfficher(String nomFichier)
throws IOException
{
final int LONG_NP = 30, COL1 = 37, COL2 = 41,
COL3 = 51, COL4 = 56,
COL5 = 64, COL6 = 68;
int n = 0;
boolean existeFichier = true ;
FileReader fr = null;
try {
fr = new FileReader (nomFichier) ;
}
catch ( java.io.FileNotFoundException erreur) {
System.out.println("Probleme d'ouvrir le fichier " +
nomFichier);
existeFichier = false ;
}
if (existeFichier) {
BufferedReader entree = new BufferedReader(fr);
boolean finFichier = false ;
while ( !finFichier ) {
String uneLigne = entree.readLine();
if (uneLigne == null)
finFichier = true ;
else {
String unNom = uneLigne.substring(0,LONG_NP);
char unSexe = uneLigne.charAt(LONG_NP);
double uneTaille =
( new Double(uneLigne.substring(COL1, COL2).trim())).doubleValue();
double unPoids =
( new Double(uneLigne.substring(COL3, COL4).trim())).doubleValue();
int unNumero = Integer.parseInt(uneLigne.substring(COL5, COL6).trim());
n++;
Personne unePers = new Personne(unNom, unSexe, uneTaille, unPoids, unNumero);
unePers.afficher();
}
}
entree.close();
}
return n;
}
static int lireRemplir(String nomFichier,Personne[]pers,Vector<Personne>vectPers)
throws IOException
{
final int LONG_NP = 30, COL1 = 37, COL2 = 41,
COL3 = 51, COL4 = 56,
COL5 = 64, COL6 = 68;
int n = 0;
boolean existeFichier = true ;
FileReader fr = null;
try {
fr = new FileReader (nomFichier) ;
}
catch ( java.io.FileNotFoundException erreur) {
System.out.println("Probleme d'ouvrir le fichier " +
nomFichier);
existeFichier = false ;
}
if (existeFichier) {
BufferedReader entree = new BufferedReader(fr);
boolean finFichier = false ;
while ( !finFichier ) {
String uneLigne = entree.readLine();
if (uneLigne == null)
finFichier = true ;
else {
String unNom = uneLigne.substring(0,LONG_NP);
char unSexe = uneLigne.charAt(LONG_NP);
double uneTaille =
( new Double(uneLigne.substring(COL1, COL2).trim())).doubleValue();
double unPoids =
( new Double(uneLigne.substring(COL3, COL4).trim())).doubleValue();
int unNumero = Integer.parseInt(uneLigne.substring(COL5, COL6).trim());
pers[n++]= new Personne(unNom, unSexe, uneTaille, unPoids, unNumero);
vectPers.add(new Personne(unNom, unSexe,uneTaille,unPoids,unNumero));
}
}
entree.close();
}
return n;
}
public static void main (String[] args)
throws IOException
{
int nbPers = lireAfficher("met_a14.txt");
System.out.printf("On vient de lire %d personnes\n", nbPers);
Vector<Personne> vectPers = new Vector<Personne> ();
final int MAX_PERS=nbPers;
Personne[] pers=new Personne[MAX_PERS];
int nbPerso = lireRemplir("met_a14.txt",pers,vectPers);
for(int i=0;i<vectPers.size();i++){
System.out.println(vectPers.get(i));
}
}
我想知道是否因为我需要像我的班级Personne一样创建一个类Vector。但无法找到有关如何启动它的任何信息。
答案 0 :(得分:1)
您应该覆盖toString()
类中的Person
方法以获得有意义的输出。打印的值来自toString()
类中的java.lang.Object
的默认实现。
JavaPractices中toString()
上的此页面应该为您提供更多信息。