import java.util.Scanner; public class HelloWorld { public static void main(Stri
ID: 3810139 • Letter: I
Question
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;
}
}
Explanation / Answer
PROGRAM CODE:
package skaters;
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;
}
//sort method that implements insertion sort
private Skater[] sort(Skater array[])
{
int n = array.length;
for (int i = 1; i < n; i++) {
Skater key = array[i];
int j = i-1;
while ( (j >= 0) && ( array [j].getTime() > key.getTime() ) ) {
array [j+1] = array [j];
j--;
}
array[j+1] = key;
}
return array;
}
//printing the skaters in insertion sort
public void printStandings()
{
Skater array[] = sort(skaters);
for(Skater arr: array)
{
System.out.println(arr);
}
}
}
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.