В моем задании мы должны создать 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;
}
}
}
Я думаю, что это проблема с моим сопоставимым, но я в недоумении, почему он продолжает печатать, не могу найти.Я так и не смог найти находку, которая тоже работает, что могло бы стать моей проблемой.