Извлечение информации и сравнение ее с файлом CSV - PullRequest
0 голосов
/ 23 сентября 2019

В моем задании мы должны создать listArray и извлечь информацию из CSV-файла, распечатать список, найти пользователя, запрашивающего информацию, и распечатать элемент через сканер.Мы должны включить: ListArray () с 10 элементами, ListArray (intacity) Создает список, используя массив с элементами вместимости, void add (E item) Добавить элемент в список, int find (E target) Найти цель в списке,Если найдено, вернуть индекс (относительно 0). Если не найдено, вернуть -1.Метод find () должен использовать метод equals () для сравнения универсальных объектов, как это делается в классе Java ArrayList. E get (int index) Возвращает объект E по индексу позиции в списке.Если индекс выходит за пределы, вернуть ноль.До сих пор я не смог заставить его работать, но я дошел до того, что он распечатает список и найдет часть.Хотя он повторяет оператор «Не удается найти часть», и я так растерялся, что Хаббл не может найти меня.Любая помощь приветствуется.

public class Prog2<E> {

public static void main(String[] args) {
    String partNumber = "";
    String description = "";
    double price = 0;
    String warehouseID = "";
    int quantity = 0;

    Scanner part = null;
    try {
        part = new Scanner(new File("parts.txt"));
    } catch (FileNotFoundException e) {
        System.out.println("Error: File was not found");
    }
    System.out.printf("%-13s %-30s %9s %14s %11s\n", " Part Number", "  Description", "  Price", " Warehouse",
            "Quantity");
    System.out.printf("%-13s %-32s %8s    %11s %11s\n", "-------------", " ------------------------", "-------",
               "-----------", "----------");

    ListArray<Part> items = new ListArray<Part>();
    while (part.hasNext()) {
        String partInfo = part.nextLine();
        String[] tokens = partInfo.split(",[ ]*");

        partNumber = tokens[0];
        description = tokens[1];
        price = Double.parseDouble(tokens[2]);
        warehouseID = tokens[3];
        quantity = Integer.parseInt(tokens[4]);

        items.add(new Part(partNumber, description, price, warehouseID, quantity));
        System.out.printf("%-14s %-31s %8.2f %14s %11d\n", partNumber, description, price, warehouseID, quantity);
    }
        Scanner in = new Scanner(System.in);
        System.out.println("\nEnter any part number.");
        String answer = in.nextLine().toUpperCase();
        for (int i = 0; i < items.size(); i++) {
        if  (items.get(i).getPartNumber().equals(answer)) {

                System.out.printf("Part Number: %-10s\n", items.get(i).getPartNumber());
                System.out.printf("Description: %-20s\n", items.get(i).getDescription());
                System.out.printf("Price: %-3.2f\n", items.get(i).getPrice());
                System.out.printf("Warehouse: %s\n", items.get(i).getWarehouseID());
                System.out.printf("Quantity: %d\n", items.get(i).getQuantity());
            } else  {
                System.out.println("Unable to locate part. Please try again.");
            }
        }
        part.close();
    }

}

public class Part implements Comparable{
private String partNumber;
private String description;
private double price;
private String warehouseID;
private int quantity;

public Part(String partNumber, String description, double price, String warehouseID, int quantity) {
    super();
    this.partNumber = partNumber;
    this.description = description;
    this.price = price;
    this.warehouseID = warehouseID;
    this.quantity = quantity;
}

public String getPartNumber() {
    return partNumber;
}

public String getDescription() {
    return description;
}

public double getPrice() {
    return price;
}

public String getWarehouseID() {
    return warehouseID;
}

public int getQuantity() {
    return quantity;
}

@Override
public int compareTo(Object args) {
    return this.partNumber.compareTo(((Part)args).partNumber);
}

 @Override
 public boolean equals(Object t) {
  if (this == t)
   return true;
  if (t == null)
   return false;
  if (getClass() != t.getClass())
   return false;
  Part other = (Part) t;
  if (partNumber == null) {
   if (other.partNumber != null)
    return false;
  } else if (!partNumber.equals(other.partNumber))
   return false;
  return true;
 }



}


public class ListArray<E extends Comparable> {
private E[] list;
private int size;

public ListArray() {
    super();
    list = (E[]) new Comparable[13];
    size = 0;
}

public void add(E item) {
    if(size >= list.length) {

    }
    list[size] = item;
    size++;
}

public void add(int index, E item) {
    int pos = size - 1;
    while(pos > index) {
        list[pos+1] = list[pos];
        pos--;
    }
    list[index] = item;
    size++;
}

public E get(int index) {
    return list[index];
    }

public int size() {
    return size;
}

public Object indexOf(Part target) {
    int index = 0;
    while(list[index].equals(target) != true && index < size ){
        index++;
    }
    if(list[index].equals(target)) {
        return (int) list[index];
    }else {
        return null;
    }
}

}

Я думаю, что это проблема с моим сопоставимым, но я в недоумении, почему он продолжает печатать, не могу найти.Я так и не смог найти находку, которая тоже работает, что могло бы стать моей проблемой.

...