在我的作业中,我们应该创建一个ListArray并从CSV文件中提取信息,打印出列表,然后通过扫描仪找到用户要求的信息并打印出项目。我们必须包括:
ListArray()
具有10个元素,ListArray( int capacity )
void add( E item )
int find( E target )
E get( int index )
到目前为止,我还无法使它正常工作,但是我已经明白了要从列表中打印出来并找到零件的位置。尽管遍历“找不到部分”的其他语句,但我很迷失,哈勃无法找到我。任何帮助表示赞赏。
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;
}
}
}
我认为这与我的可比性有关;但是,我茫然为什么它不断打印出找不到的东西。我也找不到能够起作用的发现,这也可能是我的问题。
您的问题是,只要遇到列表中与给定零件号不匹配的零件,您就在打印Unable to locate part. Please try again.
。因此,您需要设置一个标志来存储是否找到了零件。只有在循环之后,您才能确定是否找到了零件。
boolean found = false;
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());
found = true;
break;
}
}
if (!found) {
System.out.println("Unable to locate part. Please try again.");
}
旁注:下次您在StackOverflow上提问时,请包括相关数据;对您的代码进行反向工程相当困难!尽管如此,欢迎来到社区!