我已经把这个程序的大部分工作分开了一些不是,我是Java的新手,所以我不明白我的意思。
以下是方法:
public String getInventoryCode()
{
return inventoryCode;
}
public int getQuantityInStock()
{
return quantityInStock;
}
public int getDailyDemand()
{
return dailyDemand;
}
public int getReOrder()
{
return reOrder;
}
public int getLeadTime()
{
return leadTime;
}
public int newDeliveryIn(int newDeli)
{
quantityInStock += reOrder;
return newDeli;
}
这是主要代码:
StockItem item_1 = new StockItem("A654Y", 1000, 50, 500, 13);
int quantityIn = item_1.getQuantityInStock();
for (int n = 1; n <=50 ; n++)
{
quantityIn -= item_1.getDailyDemand();
System.out.print(n + "\t");
System.out.println(quantityIn);
if (n % item_1.getLeadTime() == 1 ){
System.out.println("Batch Ordered");
}
else if (n % item_1.getLeadTime() == 0){
quantityIn += item_1.getReOrder();
System.out.println("Batch Received");
}
}
这是一个简单的库存控制程序,每天计算50天,每天减少库存量(quantityInStock)X量(dailyDemand),然后到达某一天(例如每隔10天(避货港)还没有为此做出一个方法,因为不知道如何去做)它会订购更多的库存(reOrder),这些库存将在订单(leadTime)后的一定天数后交付并添加到当前库存中。我认为我几乎就在那里,这是我无法解决的最后一点。
这是我目前得到的输出:
1 950
Batch Ordered
2 900
3 850
4 800
5 750
6 700
7 650
8 600
9 550
10 500
11 450
12 400
13 350
Batch Received
14 800
Batch Ordered
15 750
16 700
17 650
18 600
19 550
20 500
21 450
22 400
23 350
24 300
25 250
26 200
Batch Received
27 650
Batch Ordered
...
我还希望“批量订购,批量接收”与相关日期(第3列)相反,而不是根据,但无法确定如何。
任何帮助都会很棒!感谢。
答案 0 :(得分:1)
在完成确定天气的两个if
语句后,我会通过打印到控制台来执行此操作,或者不显示Batch Received
或Batch Ordered
。
所以将for
循环更改为此
for (int n = 1; n <=50 ; n++)
{
String out = "";
quantityIn -= item_1.getDailyDemand();
out += n;
out += " " + quantityIn;
if (n % item_1.getLeadTime() == 1 ){
out += " Batch Ordered";
}
else if (n % item_1.getLeadTime() == 0){
quantityIn += item_1.getReOrder();
out += " Batch Received";
}
System.out.println(out);
}
我刚刚创建了一个名为out
的变量。我不断向此变量添加内容,并在for循环结束时打印out
。这样您就不必担心以任何奇特的方式打印到控制台。
这是股票问题的解决方案。
int reOrderThreshold = 10;
StockItem item_1 = new StockItem("A654Y", 1000, 50, 500, 13);
int orderTravelTime = 0;
boolean orderInTravel = false;
for(int i = 0; i < 50; i++){
//Do other things, like printing out daily demand and i
if(orderInTravel && orderTravelTime < item_1.getLeadTime()){//If order has been ordered and has not arrived
orderTravelTime ++;
} else if(orderInTravel && orderTravelTime >= item_1.getLeadTime()){//If ordered and has arrived
orderTravelTime = 0;
orderInTravel = false;
item_1.quantityInStock += item_1.getReOrder();
}
if(item_1.getQuantityInStock() < reOrderThreshold){//If stock gets to low, order
orderInTravel = true;
}
}
答案 1 :(得分:0)
使用
System.out.print(quantityIn);
主代码中的
答案 2 :(得分:0)
在此之前:
System.out.println(quantityIn);
检查批次是否已订购或之后收到!如果是这样的话
print(quantityIn)
而不是
System.out.println(quantityIn);