获取方法在简单的Java程序中工作

时间:2014-12-01 22:40:07

标签: java methods

我已经把这个程序的大部分工作分开了一些不是,我是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列)相反,而不是根据,但无法确定如何。

任何帮助都会很棒!感谢。

3 个答案:

答案 0 :(得分:1)

在完成确定天气的两个if语句后,我会通过打印到控制台来执行此操作,或者不显示Batch ReceivedBatch 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);