Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

I need help with this java programming code, I´m new to java programming. The ta

ID: 3670236 • Letter: I

Question

I need help with this java programming code, I´m new to java programming. The task was to write 4 versions of a key card system. Each version is a further development of the one before. A chegg expert helped me write these codes. Version 0.1, 0.2 and 0.3 works fine. But I need help to rewrite "version 0.4", because I get two errors. Please write the code so that it can be pasted into my java project. This is my last Chegg question available this momth. I´ll make sure to give you a thumbs up!

Version 0.1

public abstract class Card {
   String firstName;
   String lastName;
int pin;
   long cardNumber;
   boolean accessCode;
   static long card = 1;
  
   public Card() {
       firstName = "Alex";
       lastName = "Mitti";
       pin =1120;
       cardNumber = card;
       card++;
       accessCode = false;
   }
   String getName(){
       return firstName + " "+lastName;
   }
   abstract boolean checkPIN(int pin);
  
   @Override
   public String toString() {
       return "[Name: "+firstName+" "+lastName+",PIN: "+pin+",Card Number: "+cardNumber+",IsCancelled: "+accessCode+"]";
   }
  
   boolean isCancelled(){
       return accessCode;
   }
  
}

Version 0.2

import java.util.*;

class Employee extends Card{

   @Override
   boolean checkPIN(int pin) {
       int day, month, year;
   int second, minute, hour;
   GregorianCalendar date = new GregorianCalendar();
     
   day = date.get(Calendar.DAY_OF_MONTH);
     
   second = date.get(Calendar.SECOND);
   minute = date.get(Calendar.MINUTE);
   hour = date.get(Calendar.HOUR);
   if(hour>=7 && hour<=17 && !isCancelled() && pin!=9999){
       return true;  
   }
       return false;
   }
     
}

class Guest extends Card{
   Date issueData;
   public Guest(){
       pin =9999; //THIS IS WHERE THE ERROR OCCURS "Cannot convert from int to String".
       issueData = new Date();
   }
   @Override
   boolean checkPIN(int pin) {
       Date currentDate = new Date();
       int diffInDays = (int) ((currentDate.getTime() - issueData.getTime()) / (1000 * 60 * 60 * 24));
       if(pin == 9999 && diffInDays <=7 && (!isCancelled())){
           return true;
       }
       return false;
   }
     
     
}

version 0.3

import java.util.Calendar;
import java.util.GregorianCalendar;

interface Constants {
   void setFirstname(String firstName);
   String getFirstname();
   void setLastname(String lastName);
   String getLastname();
   void setFullName(String fullName);
   String getFullName();
   double computeCredit();
   double computeBonus();
}

class Employee extends Card implements Constants{

   double salaryPerHe;
   GregorianCalendar issueData ;
   public Employee() {
       salaryPerHe =123.43;
       issueData = new GregorianCalendar();
   }
   @Override
   boolean checkPIN(int pin) {
       int day, month, year;
   int second, minute, hour;
   GregorianCalendar date = new GregorianCalendar();
   year = date.get(Calendar.YEAR);
   day = date.get(Calendar.DAY_OF_MONTH);
     
   second = date.get(Calendar.SECOND);
   minute = date.get(Calendar.MINUTE);
   hour = date.get(Calendar.HOUR);
   if(hour>=7 && hour<=17 && !isCancelled() && pin!=9999){
       return true;  
   }
       return false;
   }

   @Override
   public void setFirstname(String firstName) {
       this.firstName= firstName;
   }

   @Override
   public String getFirstname() {
       return firstName;
   }

   @Override
   public void setLastname(String lastName) {
       this.lastName =lastName;
   }

   @Override
   public String getLastname() {
       return lastName;
   }

   @Override
   public void setFullName(String fullName) {
       String names[] = fullName.split("\s+");
       firstName = names[0];
       lastName=names[1];
   }

   @Override
   public String getFullName() {
       return firstName+" "+lastName;
   }

   @Override
   public double computeCredit() {
       return salaryPerHe*45; // constant 45
   }

   @Override
   public double computeBonus() {
       GregorianCalendar date = new GregorianCalendar();
   int currentYear = date.get(Calendar.YEAR);
   int startYear = issueData.get(Calendar.YEAR);
  
       return (currentYear-startYear)*45; // 45 constant
   }
     
}

version 0.4

public abstract class Cards
   String firstName;
   String lastName;
   int pin;
   long cardNumber;
   boolean accessCode;
   static long card = 1;
  
   public Card() { //ERROR: "return type for the method is missing"
       firstName = "Alex";
       lastName = "Mitti";
       pin = 0;
       cardNumber = card;
       card++;
       accessCode = false;
   }
   String getName(){
       return firstName + " "+lastName;
   }
   abstract boolean checkPIN(int pin);
  
   @Override
   public String toString() {
       return "[Name: "+firstName+" "+lastName+",PIN: "+pin+",Card Number: "+cardNumber+",IsCancelled: "+accessCode+"]";
   }
  
   boolean isCancelled(){
       return accessCode;
   }
  
   @Override
   public int compareTo(Card o) { //ERROR: the method compareTo(Card) of type Cards must override or implement a supertype method"
       if(this.lastName.compareTo(o.firstName) !=0)
           return -1;
       return this.firstName.compareTo(o.firstName);
   }
  
  
}

Explanation / Answer

public abstract class Cards implements Comparable<Cards> {
   String firstName;
   String lastName;
   int pin;
   long cardNumber;
   boolean accessCode;
   static long card = 1;

   public Cards() { // ERROR: "return type for the method is missing"
                       // it is constructor, class name and constructor name
                       // must be same
                       // it is modified as Cards
       firstName = "Alex";
       lastName = "Mitti";
       pin = 0;
       cardNumber = card;
       card++;
       accessCode = false;
   }

   String getName() {
       return firstName + " " + lastName;
   }

   abstract boolean checkPIN(int pin);

   @Override
   public String toString() {
       return "[Name: " + firstName + " " + lastName + ",PIN: " + pin
               + ",Card Number: " + cardNumber + ",IsCancelled: " + accessCode
               + "]";
   }

   boolean isCancelled() {
       return accessCode;
   }

   @Override
   public int compareTo(Cards o) { // ERROR: the method compareTo(Card) of type
                                   // Cards must override or implement a
                                   // supertype method"

       // The parametes is Cards and this class should implements
       // Comparable<Cards>
       // to override the compareTo method

       if (this.lastName.compareTo(o.firstName) != 0)
           return -1;
       return this.firstName.compareTo(o.firstName);
   }

}

Note: Please check the comments and modifications

if you need any thing else, just comment on this question