我是java的新手,我的方法需要帮助。
所以我需要创建flagOverdueOwners(CarOwner [] inArray)方法,该方法为注册已过期的车辆生成并返回一个数组。这被定义为超过12个月的注册,基于当前REG_MONTH为4,REG_YEAR为2014
所以这是我在RegistrationMethods类中的flagOverdueOwners方法:
public class RegistrationMethods implements Serializable{
final int REG_MONTH = 4;
final int REG_YEAR = 2014;
public CarOwner[] flagOverdueOwners(CarOwner[] inArray)
{
// insert code to compare that are earlier than 4/2013
temp = inArray;
return temp;}
}
这是我的主要方法:
public static void main (String [] args)
{
PrintWriter outputStream = null;
outputStream = new PrintWriter (new FileOutputStream ("output.txt", true));
CarOwner arr[] = dmv.flagOverdueOwners(ItStateCopy)
outputStream.println("\nOwners with Expired Registration");
for (int i = 0 ; i < arr.length ; i++)
{
outputStream.println(arr[i]);
}
outputStream.close();
}
我的output.txt应该是conatin:
已过期注册的所有者
Tasmanian Devil STU-789 10/2012
西尔维斯特猫NQR-456 1/2013
Yosemite Sam FGH-123 3/2013
(并且有一堆列表在2013年4月之后)
这是我的CarOwner课程:
public class CarOwner extends Citizen implements CarOwnerInterface, Serializable, Comparable
{
private String license;
private int month, year;
public CarOwner()
{
super();
license = "Not Assigned";
month = 0;
year = 0;
}
public CarOwner(String inFirst, String inLast, String inLicense, int inMonth, int inYear)
{
super(inFirst, inLast);
license = inLicense;
month = inMonth;
year = inYear;
}
public void setLicense(String inLicense)
{
license = inLicense;
}
public String getLicense()
{
return license;
}
public void setMonth(int inMonth)
{
month = inMonth;
}
public int getMonth()
{
return month;
}
public void setYear(int inYear)
{
year = inYear;
}
public int getYear()
{
return year;
}
public int compareTo(Object o)
{
if ((o != null) && (o instanceof CarOwner))
{
CarOwner otherOwner = (CarOwner) o;
if (otherOwner.getYear() > getYear())
return -1;
else if (otherOwner.getYear() < getYear())
return 1;
else if (otherOwner.getMonth() > getMonth())
return -1;
else if (otherOwner.getMonth() < getMonth())
return 1;
else
return 0;
}
return -1;
}
public String toString()
{
String str;
str = getLastName() +" " + getFirstName() + "\t\t" + license + "\t\t" + month + "/" + year;
return str;
}
}
如果日期早于2013年4月,我应该如何编码进行比较?
非常感谢任何帮助或建议!
答案 0 :(得分:0)
像“[LCarOwner; @ c9bf922”这样的东西是打印出CarOwner
个对象时得到的。
在这一行:
outputStream.println(dmv.flagOverdueOwners(ItStateCopy));
println
方法将在toString
返回的数组上调用dmv.flagOverdueOwners(ItStateCopy)
。数组的默认toString
方法产生类似“[LCarOwner; @ c9bf922”。
如果您想要很好地格式化它,请使用Arrays.toString
:
outputStream.println(Arrays.toString(dmv.flagOverdueOwners(ItStateCopy)));
答案 1 :(得分:0)
你必须写出血清和去除方法。 serilization方法将所有属性转换为字节,deserilization方法将使用它来构造对象。
但是,java中有更简单的方法。您已经为CarOwner实现了Serializable接口,并使用ObjectOutputStream将其写入文件,并使用ObjectInputStream从文件中读取它。所以
ObjectOutputStream outputStream = new ObjectOutputStream (new FileOutputStream ("output.txt", true));
CarOwner arr[] dmv.flagOverdueOwners(ItStateCopy)
for (int i = 0 ; i < arr.length ; i++)
{
outputStream.writeObject(arr[i]);
}