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