嗯……今天完成的任务有:一、实现了卖的方法(farmer类的sell方法)。可以从仓库里卖掉指定货物/数量,库存减少而资金增加。二、创建了土壤soil类,用农场类来管理soil类(数组),实现土壤状态查询,实现农场升级土壤数量增加的方法。
今天学到:数组之间赋值必须按索引一个个的赋值,只写数组名赋值实际上是把地址赋值了。
今天主要更新代码:
Farmer类
package code;
import plants.Plants;
public class Farmer {
private float cash = 100.0F;
public void Seed(Plants plts) {
System.out.println("种植 : " + plts.getName());
plts.setStatus(1);
}
public void TakeCare(Plants plts) {
if (plts.getStatus() <= 2)
plts.setStatus(plts.getStatus() + 1);
else
System.out.println(plts.getName() + " 已经成熟啦。 ");
}
public boolean Harvest(Plants plts) {
if (plts.getStatus() >= 3) {
System.out.println("收获了:" + plts.getName());
return true;
}
else {
System.out.println(plts.getName() + " 还没成熟. ");
return false;
}
}
public float Sell(Products pdcts) {
float sum = pdcts.getPrice() * pdcts.getProductNum();
cash = cash + sum;
System.out.println("卖了:" + pdcts.getProductNum() + "个" + pdcts.getProductName() + " 共计 " + sum + " 元。");
return sum;
}
public void setCash(float x) {
cash = x;
}
public float getCash() {
return cash;
}
}
Soil类:
package farm;
/*土壤类,属性soilStatus,初始值为0,代表没有种植作物。
* 当赋值为1后则代表已经种上作物,不可以再种。
* 收割后,soilStatus重置为0。 */
public class Soil {
private int soilStatus;
public Soil() {
soilStatus = 0;
}
public int getSoilStatus() {
return soilStatus;
}
public void setSoilStatus(int i) {
soilStatus = i;
}
}
Farm类:
package farm;
public class Farm {
/*
* 农场类,用来处理土地对象数组Soil[];农场状态用来表示农场等级,等级越高土地越多。 按每一级增加四块Soil来计算。
*/
private int farmArea;
private int farmStatus;
private Soil[] soilArray;
Farm(){
farmStatus = 1;
}
/*
* 升级农场方法,每升一级,需重新定义Soil数组。并将原Soil数组赋值给新的Soil数组。
*/
public void updateFarm() {
if (farmStatus < 5) {
farmStatus += 1;
Soil[] soilArray1 = soilArray;
setSoilArray();
for (int i = 0; i < soilArray1.length; i++) {
soilArray[i] = soilArray1[i];
System.out.print(soilArray[i].getSoilStatus() + " ");
}
System.out.println();
System.out.println(soilArray.length + "***");
for (int i = 0; i < soilArray.length; i++) {
System.out.print(soilArray[i].getSoilStatus() + "/");
}
System.out.println("农场成功升到" + farmStatus + "级。");
}
else
System.out.println("农场已升级到顶级!");
}
public void setFarmArea(int i) {
farmArea = i;
}
public int getFarmArea() {
return farmArea;
}
public void setFarmStatus(int i) {
farmStatus = i;
}
public int getFarmStatus() {
return farmStatus;
}
public void setSoilArray() {
int i = getFarmStatus();
//动态的根据农场的等级创建新的Soil数组
soilArray = new Soil[i * 4];
for(int j =0;j<soilArray.length;j++) {
soilArray[j]=new Soil();
}
// System.out.println(soilArray.length + "+++");
}
public Soil[] getSoilArray() {
return soilArray;
}
//測試用main函數
// public static void main(String[] args) {
// Farm farm = new Farm();
// farm.setSoilArray();
// farm.updateFarm();
// }
}
下一步的目标是:一、农村合作社类,包括买种子、卖产品等功能。建筑商店,包括升级农场的功能。还是采取继承的办法。一个商店类,下面有农村合作社和建筑商店。二、开始创建控制台交互方法