[英]Frustrating logical error while iterating through containers in Java
我正在嘗試用Java編寫一個簡單的“葯房送貨”程序,但是我整天都陷在這個邏輯錯誤上,而我卻無法將其包裝起來。 我敢肯定這很簡單,但我只是不明白-如果有人可以解決此問題,我將不勝感激。
總而言之,我有3類-葯品,供應商和訂單。
毒品持有有關毒品的信息(名稱和價格)。 供應商還擁有其他信息,包括帶有(葯品,數量)的地圖。 Order擁有一個帶有order的Map和Vector帶有(Suppliers)的Vector。
基本思想是用.txt文件填充Order類的2個容器。 單行的語法如下:-Ordered_drugs_name Ordered_drugs_quantity(將這2個放入訂單圖)..其余類似的參數用於初始化Suppliers對象並將其放入向量中。
現在,在我填充了這兩個容器之后,我有一種方法可以從訂單Map中提取(或至少我認為是這樣做)第一種葯物,然后對供應商向量進行迭代,以查找是否有任何供應商的此類葯物數量達到這種葯。 當然,當它開始迭代供應商時,它必須檢查當前供應商是否擁有該葯物,因此它會從供應商所擁有的葯品地圖中進行迭代。
問題在於,舉一個簡單的例子,其中有2個供應商和2個訂單,其中1個供應商僅售出1種葯品,而他擁有所需的數量,我要接收兩個要打印的供應商(一個沒有)甚至不出售這種葯物)。
這是一些代碼,很長的帖子對不起。 :(
public class Supplier {
//some private members goes here
private static Map <Drug, Integer> listOfDrugs = new HashMap <Drug, Integer>();
Supplier(String n, String rep, String repPhoneNum, String drugName, double drugPrice, int stock) {
this.supplierName = n;
this.representative = rep;
this.representativesPhoneNumber = repPhoneNum;
listOfDrugs.put(new Drug(drugName, drugPrice), stock);
}
public boolean isDrugInStock(Drug drug, int quantity) {
int stock;
for (Entry<Drug, Integer> entry : listOfDrugs.entrySet())
{
if(entry.getKey().getDrugsName().equalsIgnoreCase(drug.getDrugsName())) {
stock = (int) listOfDrugs.get(entry.getKey());
if(stock >= quantity) {
return true;
}
}
}
return false;
}
和Orders類:
public class Orders {
private Map <Drug, Integer> orderedDrugs = new HashMap <Drug, Integer>();
private Vector<Supplier> suppliers = new Vector <Supplier>();
Orders(String fileName) throws IOException {
//the reading form a .txt file goes here
}
public String order() {
for (Entry<Drug, Integer> entry : orderedDrugs.entrySet()) {
int quantity = orderedDrugs.get(entry.getKey());
for(Supplier s : suppliers) {
if(s.isDrugInStock(entry.getKey(), quantity)) {
System.out.println(s.toString());
}
}
}
return "";
}
您的Supplier
類具有靜態(因此是全局) listOfDrugs
。
我想你想擁有的是
public class Supplier {
//some private members goes here
private Map <Drug, Integer> listOfDrugs = new HashMap <Drug, Integer>();
...
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.