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

I am having a tough time trying to get this code to print the runner\'s places i

ID: 3884912 • Letter: I

Question

I am having a tough time trying to get this code to print the runner's places in the correct order. It is from myprogramminglab for java. I fixed 5 out of the 6 test runs, but this last one has me going in circles!

Question: Write a program that asks for the names of three runners and the time, in minutes, it took
each of them to finish a race. The program should display the names of the runners in the
order that they finished.

My code:

import java.util.Scanner;
public class Runners
{
public static void main(String[] args)
{
Scanner kb = new Scanner(System.in);

   String r1,r2,r3;
   int t1,t2,t3;

   Scanner sc = new Scanner(System.in);
   System.out.print("Enter runner 1 name: ");
   r1 = sc.next();

   System.out.print("Enter runner 1 time (in minutes): ");
   t1 = sc.nextInt();

   System.out.print("Enter runner 2 name: ");
   r2 = sc.next();

   System.out.print("Enter runner 2 time (in minutes): ");
   t2 = sc.nextInt();

   System.out.print("Enter runner 3 name: ");
   r3 = sc.next();

   System.out.print("Enter runner 3 time (in minutes): ");
   t3 = sc.nextInt();

   int x = 0;
   if(t1 < t2 && t1 < t3)
   {
    System.out.println(r1);
    if(t2 <= t3)
    {
     System.out.println(r2);
     x = 1;
    }
    else
    {
     System.out.println(r3);
    }
    if(x==1)
     System.out.println(r3);
    else
     System.out.println(r2);
   }

   x=0;
   if(t2 < t1 && t2 < t3)
   {
    System.out.println(r2);
    if(t1 <= t3)
    {
     System.out.println(r1);
     x=1;
    }
    else
    {
     System.out.println(r3);
    }
  
    if(x==1)
     System.out.println(r3);
    else
     System.out.println(r1);
   }
   x=0;
   if(t3 < t1 && t3 < t2)
   {
    System.out.println(r3);
    if(t1 <= t2)
    {
     System.out.println(r1);
     x=1;
    }
    else
    {
     System.out.println(r2);
    }
    if(x==1)
    {
     System.out.println(r2);
    }
    else
     System.out.println(r1);
   }
}
}

The lab output is:

Problems Detected: The contents of your standard output is incorrect. Given the following was entered from the keyboard R1 05 R2 05 R3 05 you displayed Enter runner 1 name: Enter runner 1 time (in minutes): Enter runner 2 name: Enter runner 2 time (in minutes): Enter runner 3 name: Enter runner 3 time (in minutes): instead of: Enter runner 1 name: Enter runner 1 time (in minutes): Enter runner 2 name: Enter runner 2 time (in minutes): Enter runner 3 name: Enter runner 3 time (in minutes): R1 R2 R3 Failed 1 out of 6 test runs Failed Test Run The contents of your standard output is incorrect. Interactive Session W v [Hide Invisibles Highlight: None Show Highlighted Only Expected Result: Enter runner 1 name R1. Enter runner -1 time (in -minutes):05 Enter runner 2 name: R2 Enter . runner-2 . time . (in-minutes) : 05 Enter . runner . 3-name: R3 Enter 'runner ,3-time . (in-minutes) : 05 R1. Your Code's Actual Result: Enter runner 1 name R1. Enter . runner . 1 time . (in-minutes) : 05- Enter runner 2 name R2 Enter . runner .2-time . (in-minutes) : 054 Enter runner 3 name: R3 Enter . runne r .3 . time . (in-minutes) : 05

Explanation / Answer

Hi, that is because you are only comparing < in the first condition, once you change that, its fixed,
import java.util.Scanner;
class Runners
{
public static void main(String[] args)
{
Scanner kb = new Scanner(System.in);
String r1,r2,r3;
int t1,t2,t3;

Scanner sc = new Scanner(System.in);
System.out.print("Enter runner 1 name: ");
r1 = sc.next();

System.out.print("Enter runner 1 time (in minutes): ");
t1 = sc.nextInt();

System.out.print("Enter runner 2 name: ");
r2 = sc.next();

System.out.print("Enter runner 2 time (in minutes): ");
t2 = sc.nextInt();

System.out.print("Enter runner 3 name: ");
r3 = sc.next();

System.out.print("Enter runner 3 time (in minutes): ");
t3 = sc.nextInt();

int x = 0;
if(t1 <= t2 && t1 <= t3) //here is the changes, same for the below 2 cases.
{
System.out.println(r1);
if(t2 <= t3)
{
System.out.println(r2);
x = 1;
}
else
{
System.out.println(r3);
}
if(x==1)
System.out.println(r3);
else
System.out.println(r2);
}

x=0;
if(t2 <= t1 && t2 <= t3)
{
System.out.println(r2);
if(t1 <= t3)
{
System.out.println(r1);
x=1;
}
else
{
System.out.println(r3);
}
  
if(x==1)
System.out.println(r3);
else
System.out.println(r1);
}
x=0;
if(t3 <= t1 && t3 <= t2)
{
System.out.println(r3);
if(t1 <= t2)
{
System.out.println(r1);
x=1;
}
else
{
System.out.println(r2);
}
if(x==1)
{
System.out.println(r2);
}
else
System.out.println(r1);
}
}
}
Thumbs up if this was helpful, otherwise let me know in comments. Good Day.