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

In Java import java.util.Scanner; public class RaceDriver { public static void m

ID: 3806356 • Letter: I

Question

In Java

import java.util.Scanner;

public class RaceDriver {
   public static void main(String[] args) {

       Scanner stdIn = new Scanner(System.in);
       System.out.print("Please enter how many Skater you want to enter:");
       SkateRace sRace = new SkateRace(stdIn.nextInt());

       System.out.println("Welcome to Skate Race Program ");

       //toDo
   }

   private static void phase1(Scanner stdIn, SkateRace sRace) {

       //ToDO

   }

   private static void phase2(Scanner stdIn, SkateRace sRace) {

       //ToDO
   }

   protected static Skater findLeader(SkateRace sRace) {

       //ToDO
   }

   private static void phase3(Scanner stdIn, SkateRace sRace) {

       //ToDO

   }
  
  
}

public class Skater {
   //ToDO
  
  
  
  
}

public class SkateRace {

//ToDO
  
  
  
  
   public void removeSkater(String name) {
       for (int i = 0; i < size; ++i) {
           if (name.equals(skaters[i].getName())) {
               skaters[i] = skaters[--size];
               skaters[size] = null;

               break;
           }
       }
   }

  
}

2 Program tasks You will write a program that keeps track of the race results and can print reports of the standings at any time (you can use the toString method in SkateRace to return a string that represents the current stand- ing). UML diagrams for your classes appear below. Notice that the SkateRace class holds an Array of Skaters. Your program should ask the user to enter how many skators he wants to enter. The program then will have three phases: 1. The first phase corresponds to the first half of the race. Your program will read in the name, State, and first race time for a series of skaters. After each entry, your program will print the current leader (the skater who has the lowest time in the array so far The phase will end once the user enters all the skaters in to the array. The complete standings will be printed along with the leader who has the lowest race time(assume each racer has a unique race time 2. The second phase corresponds to the second half of the race. The program will read in the name and second race time of the skaters and print the leader after each update. The phase will end once the user done updating and the complete standings will be printed. 3. In the third phase, your program will read in the names of any skaters that have been disqualified and remove them from the race. Your program will also print the overall standings at the end of the race.

Explanation / Answer

Java Code:

import java.util.Scanner;
public class HelloWorld {
public static void main(String[] args) {
Scanner stdIn = new Scanner(System.in);
System.out.print("Please enter how many Skater you want to enter:");
SkateRace sRace = new SkateRace(stdIn.nextInt());
System.out.println("Welcome to Skate Race Program ");
phase1(stdIn,sRace);
phase2(stdIn,sRace);
phase3(stdIn,sRace);
}
private static void phase1(Scanner stdIn, SkateRace sRace) {
String name,state;
double time;
System.out.println("Starting First Phase");
System.out.println("Enter Skater's data as:Name State Time");
  
for(int i=0;i<sRace.getLength();i++){
System.out.print("Enter Skater data: ");
name=stdIn.next();
state=stdIn.next();
time=stdIn.nextDouble();
Skater skater=new Skater(name,state,time);
sRace.addSkater(skater);
System.out.println("Current Leader: "+findLeader(sRace).toString()+" ");

}
System.out.println("Curren Standings: ");
System.out.println(" The Leader is : "+findLeader(sRace).toString()+" ");
for(int i=0;i<sRace.getSize();i++){
System.out.print((i+1)+":"+sRace.getSkater(i).toString()+" ");

}
  
}
private static void phase2(Scanner stdIn, SkateRace sRace) {
System.out.println(" Starting Second Phase ");
String name;
double newtime;
while(true){
System.out.print("Enter the name and updated time of skater you want to update or "quit" :");
name=stdIn.next();
if(name.equals("q"))
break;
newtime=stdIn.nextDouble();
if(sRace.updateSkater(name,newtime))
System.out.println("Skater "+name+" updated and the new Skater data is :"+sRace.getSkater(name).toString());
else
System.out.println("Skater "+name+ " is not updated!");
}

System.out.println("Current Standings: ");
System.out.println(" The Leader is : "+findLeader(sRace).toString()+" ");
for(int i=0;i<sRace.getSize();i++){
System.out.print((i+1)+":"+sRace.getSkater(i).toString()+" ");

}
  
  
}
protected static Skater findLeader(SkateRace sRace) {
Skater leader=sRace.getSkater(0);
for(int i=1;i<sRace.getSize();i++){
if(sRace.getSkater(i).getTime()<leader.getTime())
leader=sRace.getSkater(i);
}
return leader;
}
private static void phase3(Scanner stdIn, SkateRace sRace) {
System.out.println("Starting Third and disqualifying phase");
String name;
while(true){
System.out.print("Enter the name of the Skater you want to disqualify or "quit" :");
name=stdIn.next();
if(name.equals("quit"))
break;
sRace.removeSkater(name);
}
if(sRace.getSize()>0){

System.out.println("Current Standings: ");
System.out.println(" The Leader is : "+findLeader(sRace).toString()+" ");
for(int i=0;i<sRace.getSize();i++){
System.out.print((i+1)+":"+sRace.getSkater(i).toString()+" ");
}
}else{
System.out.println("All racers disqualified");
}
}
  
  
}

class Skater {
private String name;
private String state;
private double time;
  
public Skater(String name,String state,double time){
this.name=name;
this.state=state;
this.time=time;
}
public String getName(){
return name;
}
public String getState(){
return state;
}
public double getTime(){
return time;
}
public void setTime(double time){
this.time=time;
}
public String toString(){
return (name+" "+state+" "+time);
}
  
  
}

class SkateRace {
private Skater[] skaters;
private int size;
  
public SkateRace(int numberOfSkaters){
this.size=0;
skaters=new Skater[numberOfSkaters];
}
  
public int getSize(){
return size;
}
  
public int getLength(){
return skaters.length;
}
public void addSkater(Skater skater){
if(size<=getLength()){
skaters[size]=skater;
size += 1;
}
}
public Skater getSkater(String name){
for(int i=0;i<size;i++){
if(skaters[i].getName().equals(name)){
return skaters[i];
}
}
return null;
}
public Skater getSkater(int position){
if(position>=0&&position<size)
return skaters[position];
else
return null;
}
public boolean updateSkater(String name,double newtime){
Skater skater=getSkater(name);
if(skater!=null&&newtime<skater.getTime()){
skater.setTime(newtime);
return true;
}else{
return false;
}

}
  
public void removeSkater(String name) {
for (int i = 0; i < size; ++i) {
if (name.equals(skaters[i].getName())) {
while(i<=(size-1)){
if(i==(size-1))
skaters[i]=null;
else
skaters[i]=skaters[i+1];
i++;
}
size -= 1;
break;
}

}

}
public String toString(){
String racers="";
for(int i=0;i<size;i++){
racers += skaters[i].toString()+",";
}
return racers;
}
  
}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote