J'ai une classe appelée Vehicle. Il a quatre sous-classes: Voiture, Moto, Van et Pickup. Voici les déclarations de chacun:Insertion d'un fichier dans un tableau d'objets
//vehicle
String licenseNo = null;
int engineCap = 0;
int cc = 0;
String brand = null;
String model = null;
int passengers = 0;
double price = 0;
//car
String material = null;
String paintType = null;
String colorC = null;
//motorcycle
String mainColor = null;
String seatColor = null;
String seatMaterial = null;
//van
int luggageCap = 0;
String colorV = null;
//pickup
int tonsCap = 0;
int yearsUsed = 0;
String tyreQuality = null;
Note: Ce n'est pas la façon dont je les a déclarés dans les classes réelles. C'est ainsi que je les ai initialisés dans la méthode im essayant d'écrire.
Voici le reste de la méthode:
FileReader fileReader = new FileReader(filename);
BufferedReader in = new BufferedReader(fileReader);
int count = 0;
Scanner scan = new Scanner(in);
while (scan.hasNext())
{
vehicledata[count++] = new Vehicle(scan.next(), scan.nextInt(), scan.nextInt(), scan.next(), scan.next() ,scan.nextInt(), scan.nextDouble());
}
J'ai un tableau:
static Vehicle vehicledata[] = new Vehicle[50];
pour maintenir les valeurs du fichier. Le fichier ressemble à ceci: Text file im reading from
Je pourrais lire les valeurs dans une classe de véhicule normale. Mais j'ai besoin de séparer les sous-classes, afin que je puisse les trier par leurs types. (Comme: Liste des voitures, la liste des véhicules utilitaires)
Je suis au:
vehicledata[count++] = new Vehicle(scan.next(), scan.nextInt(), scan.nextInt(), scan.next(), scan.next() ,scan.nextInt(), scan.nextDouble());
partie .. et je ne sais pas comment je peux différencier les voitures et d'autres choses à ce stade. (À partir du fichier après le dernier attribut dans le véhicule, il y aura le type de véhicule, suivi par l'attribut de cette sous-classe)
Des indices sur la façon dont je peux faire cela? Une condition si? Mais comment puis-je mettre en œuvre à l'intérieur du
vehicledata[count++] = new Vehicle(scan.next(), scan.nextInt(), scan.nextInt(), scan.next(), scan.next() ,scan.nextInt(), scan.nextDouble());`
Je créerais le fichier JSON.Vous pouvez mapper à partir de cet objet vers des objets Java, ou simplement gérer le JSON analysé en tant que Maps et Lists. Beaucoup d'outils disponibles. –
Si vous avez besoin d'utiliser la classe scanner (ce qui me semble assez inconfortable), alors vous devez assigner les résultats aux variables temporaires jusqu'à ce que vous puissiez prendre la décision: int i1 = scan.nextInt(); int i2 = scan.nextInt(); Chaîne t = scan.nextString(); if ("Car" .equals (t)) {v = nouvelle voiture (i1, i2); } else if .... – eckes