Это мой проект, где мне нужно реализовать наследование, полиморфизм и io.
Надеюсь, кто-то может мне помочь. У меня есть текстовый файл с данными сумок.Чтение входного файла в абстрактный суперкласс java
Local, Рюкзак, Нью-Йорк, черный, 45,00; 5
Местный, рюкзак, швейцарский Polo, серый; 59,00; 1
Местный, рюкзак, Билл Кит, синий 50,00; 2
импорт; сумка; Padini , Желтый, 120,00; 3
Импорт; Сумочка; PDI; Красный; 170,00; 2
импорт; сумка; P &CO; зеленый; 200,00; 1
У меня есть абстрактный суперкласс с конструктором, аксессором и методом ToString, которые состоят из ItemType, bagType, марки, цвета, цены и количества согласно данным соответственно.
У меня также есть 2 подкласса, Импорт и локальные, которые распространяются из мешка суперкласса, наследующего один и тот же атрибут от суперкласса.
У меня проблема с чтением данных в массив абстрактного суперкласса, потому что он скажет, что абстрактный класс не может быть создан. Да, я знаю это. Итак, что мне делать, чтобы я мог считывать данные в массив?
Это мой абстрактный суперкласс Bag
:
public abstract class Bag
{
private String bagType;
private String colour;
private String brand;
private int quantity;
private double price;
//default constructor
public Bag()
{
bagType = " ";
colour = " ";
brand = " ";
quantity = 0;
price = 0.00;
}
//normal constructor
public Bag(String bagType, String brand, String colour, double price, int quantity)
{
this.bagType = bagType;
this.brand = brand;
this.colour = colour;
this.price = price;
this.quantity = quantity;
}
//accessor method
public String getColour()
{
return colour;
}
public String getBrand()
{
return brand;
}
public int getQuantity()
{
return quantity;
}
public double getPrice()
{
return price;
}
//mutator method
public void setBagType(String bt)
{
bagType = bt;
}
public void setColour(String c)
{
colour = c;
}
public void setBrand(String b)
{
brand = b;
}
public void setQuantity(int q)
{
quantity = q;
}
public void setPrice(double p)
{
price = p;
}
//abstract method
public abstract double calcPrice();
//toString method
public String toString()
{
return
"\nBag Type : " + bagType +
"\nItem Colour : " + colour +
"\nItem Brand : " + brand +
"\nItem Quantity : " + quantity +
"\nPrice : " + price;
}
}
И это мой тестовый класс:
import java.util.*;
import java.io.*;
public class TestBag
{
public static void main(String [] args)
{
try
{
BufferedReader in = new BufferedReader(new FileReader("Bag.txt"));
PrintWriter Import = new PrintWriter(new BufferedWriter(new FileWriter("Import.txt")));
PrintWriter Local = new PrintWriter(new BufferedWriter(new FileWriter("Local.txt")));
String data = null;
int size = 0;
while((data = in.readLine()) != null)/**read data to count the no of records*/
{
StringTokenizer input = new StringTokenizer(data,";");
size++;
}
in.close();
/**reopen the input file*/
in = new BufferedReader(new FileReader("Bag.txt"));
Bag b [] = new Bag[size];
int index = 0;
while((data = in.readLine()) != null) //read the contents of file and process the data
{
StringTokenizer inData = new StringTokenizer(data,";");
String type = inData.nextToken();
String bagType = inData.nextToken();
String brand = inData.nextToken();
String colour = inData.nextToken();
double price = Double.parseDouble(inData.nextToken());
int quantity = Integer.parseInt(inData.nextToken());
if(type.equalsIgnoreCase("Import")) //Import
{
b[index] = new Import(bagType, brand, colour, price, quantity);
System.out.println(b[index].toString());
}
else if(type.equalsIgnoreCase("Local"))
{
b[index] = new Local(bagType, brand, colour, price, quantity);
System.out.println(b[index].toString());
}
index++;
}
//
in.close();
Import.close();
Local.close();
}
//end of try
catch(FileNotFoundException fnfe)
{ System.out.print(fnfe.getMessage());}
catch(IOException io)
{ System.out.print(io.getMessage());}
catch(Exception e)
{ System.out.print(e.getMessage());}
}
}
Прошу прощения. Я все еще новичок в java.
Я не вижу абстрактного класса в коде, который вы опубликовали. –
Абстрактный класс находится в классе Bag, который является суперклассом, это класс testBag, где я проверяю свой код. – Nabella
Извините, мой хрустальный шар сломан, поэтому я не вижу ваш класс 'Bag', если вы его не покажете. –