2015-01-31 5 views
0
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) 

Я имею ошибки, пытаясь скомпилировать этот код, я получаю плохой операнд для бинарных операторов. Я пытаюсь отобразить данные о аренде клиента в течение определенного периода времени.

ответ

1

Скорее всего, r.getReturnDate не возвращает числовое значение (целое число, двойной, длинный, и т.д.) я предполагаю, он возвращает объект Date/Calendar, и вы не можете сравнить объект с бинарными операторами. Именно поэтому они называются бинарными операторами;)

Решение: Использование: Календарь # ранее (объект) или #after (объект)

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

@Brandon Если это работает, пожалуйста, примите ответ :) – JClassic

+0

@JClassic Они называются бинарными операторами, поскольку они используются с _two_ операндами. – August

+0

@august Я всегда считал, что они были двоичными операторами, потому что они работают на двух примитивных типах (как при использовании бит для хранения их значений?) – JClassic

0

Вы не можете сравнивать Object экземпляры с < или > вот так. Вместо этого вы должны использовать Calendar.before(Object) и Calendar.after(Object). Нечто подобное,

if(r.getPickupDate().after(dob) && r.getReturnDate().before(dob1)) 
{ 
    System.out.println(r); 
} 
+0

Очевидно, что искатель не спящий: P – JClassic

+0

Благодарим за помощь! Мне удалось это сделать :) – Brandon

Смежные вопросы