java - 错误的操作数类型

标签 java

public static void listRentalDetailsOverPeriod(ArrayList customerList)
{
Scanner input = new Scanner(System.in);
Customer c = null;
Vehicle v = null;

System.out.println("Enter Ic Number:");
String icNo = input.nextLine();

for(int i=0;i<customerList.size();i++)
{//start of for loop
Customer cust = (Customer) customerList.get(i);
if(cust.getIcNo().equalsIgnoreCase(icNo))
{
  c = cust;
  break;
}
}//end of for loop

ArrayList rentalList = c.getRentalList();

System.out.print("Enter Start Date(DD MM YYYY): ");
int dd = input.nextInt();
int mm = input.nextInt();
int yyyy = input.nextInt();

Calendar dob = new GregorianCalendar(yyyy,mm-1,dd);//creates calendar object

System.out.print("Enter End Date(DD MM YYYY): ");
int dd1 = input.nextInt();
int mm1 = input.nextInt();
int yyyy1 = input.nextInt();

Calendar dob1 = new GregorianCalendar(yyyy1,mm1-1,dd1);//creates calendar object

for(int i=0;i<rentalList.size();i++)
{//start of for loop
Rental r = (Rental) rentalList.get(i);//create rental object


if(r.getPickupDate() > dob && r.getReturnDate() < dob1)
{
System.out.println(r);
}


}//end of for loop
}

错误:

VehicleRental.java:660: error: 
bad operand types for binary operator '>'
if(r.getPickupDate() > dob && r.getReturnDate() < dob1)

我在尝试编译此代码时遇到错误,我得到了错误的二元运算符操作数。我正在尝试显示客户在一段时间内的租赁详细信息。

最佳答案

很可能,r.getReturnDate 不会返回数字值(整数、 double 、长整型等),我假设它返回Date/Calendar 对象,并且不能将对象与二元运算符进行比较。这就是为什么它们被称为二元运算符;)

解决方案: 使用: 日历#before(obj) 或 #after(object)

if(r.getPickupDate().after(dob) && r.getReturnDate().before(dob1)){
    //do stuff
}

关于java - 错误的操作数类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28248099/

相关文章:

java - 如何从 arraylist 中减去一些值?

java - 将编辑文本中的项目添加到微调器

java - 创建新线程的限制

java - 为什么string.matches ["+-*/"]会报模式异常?

java - 需要通知/仪表板系统的框架吗?

java - 在 hibernate/jpa 最佳实践问题中将分离的或新的实体与现有实体合并

java - 从巨大的数据库表中检索结果集的策略

java - 创建一个 HQL 查询,该查询将获取集合中的每个项目并进行比较

java - Eclipse创建runnable jar问题

java - J2ME数据库更新问题