今天的收获是纠正了对数组长度的理解。对数组的动态和静态创建加深了印象。纠正了增删改查中的逻辑错误。这个错误通常都是在for循环遍历之后,对其他可能性的考量不够。通过增加if判断和for循环解决。不过这样显得代码臃肿,看以后能否优化。
今天的主要进展是完善了Storage类的出入库和展示的方法。并成功使用main函数调用,功能复合要求。另外就是对Farmer类的Harvest方法增加了布尔类型的返回值,可以开起收获后的入库操作。此外Products类增加了价格属性。
package code;
public class Storage {
// 用产品类数组处理仓库存储
Products[] storageProduct = new Products[] {
new Products(),
new Products(),
new Products(),
new Products(),
new Products(),
new Products(),
new Products(),
new Products(),
new Products(),
new Products()
};
int[] ints = new int[]{1,2,3};
public Storage() {
// storageProduct = new Products[];
}
public void demonstrateproduct(Products[] stpdct) {
// 显示有多少农产品。
int j = storageProduct.length;
for (int i = 0; i < j; i++) {
if (stpdct[i].getProductName() == null)
continue;
System.out.println(stpdct[i].getProductName() + " " + stpdct[i].getProductNum() + "个");
}
}
public void addStorage(Products pdcts) {
// 收获增加库存
int i = storageProduct.length;
// System.out.println(i);
int j = 0;
int num = 0;
for (; j < i; j++) {
//判断以后库存的货物,仅仅增加数量
if (storageProduct[j].getProductName() == pdcts.getProductName()) {
num = storageProduct[j].getProductNum() + pdcts.getProductNum();
storageProduct[j].setProductNum(num);
System.out.println("已有货物");
break;
}
}
if (j == i) {
for (j = 0; j < i; j++) {
//判断数组中是否有空对象,有则替换之
if (storageProduct[j].getProductName() == null) {
storageProduct[j] = pdcts;
System.out.println("替换了空置");
break;
}
}
}
//无以上情况者正常添加
if (j == i)
storageProduct[i] = pdcts;
}
public void minusStorage(Products pdcts) {
// 售卖,减少库存。
int i = storageProduct.length;
int num = 1;
for (int j = 0; j < i; j++) {
if (storageProduct[j].getProductName() == pdcts.getProductName()) {
num = storageProduct[j].getProductNum() - pdcts.getProductNum();
if (num == 0)
storageProduct[j] = new Products();
else
storageProduct[j].setProductNum(num);
break;
}
}
}
}
下一步计划:一是发现Plants类直接用很不方便,不同的作物和它的果实(Products)的对应只能僵硬的添加。因此考虑使用继承的方法,创建具体的作物类,如番茄苗类、土豆苗类、苹果树类等。二是完成土地类的创建和状态更改操作,土地和作物对应,土地已种满则不能继续种新的作物,土地数量可升级。三是完成作物售卖功能。