How should I edit my code to achieve the desired output? I wanted to practice using this program but I can't get the output that displays the thread that finished first and last, and also the display "No winner" import java.util.Random;

Computer Networking: A Top-Down Approach (7th Edition)
7th Edition
ISBN:9780133594140
Author:James Kurose, Keith Ross
Publisher:James Kurose, Keith Ross
Chapter1: Computer Networks And The Internet
Section: Chapter Questions
Problem R1RQ: What is the difference between a host and an end system? List several different types of end...
icon
Related questions
Question

How should I edit my code to achieve the desired output? I wanted to practice using this program but I can't get the output that displays the thread that finished first and last, and also the display "No winner"

import java.util.Random;
import java.util.Scanner;

class prog1 implements Runnable {
    private String cName = new String("");
    private int x;
    public int c1 = 0, c2 = 0, c3 = 0;
    public prog1 (String cName, int x){
        this.cName = cName;
        this.x = x;
    }
    @Override
    public void run(){
        Random r = new Random();
        int randNum;
        for (int i = 1; i <= this.x; i++){
            randNum = r.nextInt(x) + 1;
            if(i == 3) {
                System.out.println(" Voter " + i + " " + cName + " = " + randNum + "[Voting is closed]");
            } else
                System.out.println(" Voter " + i + " " + cName + " = " + randNum);
            if(randNum == 1)
                c1++;
            if(randNum == 2)
                c2++;
            if(randNum == 3)
                c3++;
        }
    }
}

public class Quiz2 {
    public static void main(String args[]){
        Scanner sc = new Scanner(System.in);
        int c1 = 0, c2 = 0, c3 = 0;
       
        for (int x = 0; x < args.length; x++){
            System.out.println(args[x]);
        }
       
        System.out.print("Enter number of voters: ");
        int input = sc.nextInt();
       
        prog1 r1 = new prog1("Thread #1", input);
        Thread Candidate1 = new Thread(r1);
        Candidate1.start();
        prog1 r2 = new prog1("Thread #2", input);
        Thread Candidate2 = new Thread(r2);
        Candidate2.start();
        prog1 r3 = new prog1("Thread #3", input);
        Thread Candidate3 = new Thread(r3);
        Candidate3.start();

        try {
            Candidate1.join();
            Candidate2.join();
            Candidate3.join();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
       

        c1 = r1.c1 + r2.c1 + r3.c1;
        c2 = r1.c2 + r2.c2 + r3.c2;
        c3 = r3.c3 + r2.c3 + r3.c3;

        System.out.println("\nCandidate #1 has " + c1 + " vote(s).");
        System.out.println("Candidate #2 has " + c2 + " vote(s).");
        System.out.println("Candidate #3 has " + c3 + " vote(s).");

        if(c1 > c2) {
            if(c1 > c3) {
                System.out.println("\nCandidate #1 wins!!!\n");
            } else {
                System.out.println("\nCandidate #3 wins!!!\n");
            }
        } else {
            if(c2 > c3) {
                System.out.println("\nCandidate #2 wins!!!\n");
            } else {
                System.out.println("\nCandidate #3 wins!!!\n");
            }
        }

        sc.close();
       
    }
}

General Output
---Configuration: <Default>-
Enter number of voters: 3
Voter 1 Thread #1 = 2
Voter 2 Thread #1 = 3
Voter 3 Thread #1 =
Voter 1 Thread #3 2
Voter 1 Thread #2 = 2
Voter 2 Thread #3 = 3
Voter 3 Thread #3 =
1[Voting is closed]
2[Voting is closed]
2
Voter 2 Thread #2
Voter 3 Thread #2
%3D
2[Voting is closed]
Candidate #1 has 1 vote(s).
Candidate #2 has 6 vote(s).
Candidate #3 has 2 vote(s).
Candidate #2 wins.
Process completed.
Transcribed Image Text:General Output ---Configuration: <Default>- Enter number of voters: 3 Voter 1 Thread #1 = 2 Voter 2 Thread #1 = 3 Voter 3 Thread #1 = Voter 1 Thread #3 2 Voter 1 Thread #2 = 2 Voter 2 Thread #3 = 3 Voter 3 Thread #3 = 1[Voting is closed] 2[Voting is closed] 2 Voter 2 Thread #2 Voter 3 Thread #2 %3D 2[Voting is closed] Candidate #1 has 1 vote(s). Candidate #2 has 6 vote(s). Candidate #3 has 2 vote(s). Candidate #2 wins. Process completed.
Create a program that allows users to enter the number of voters, then
generates 3 Threads.
Thread #1 will be named Candidate #1, Thread #2 as Candidate #2 and Thread #3 as
Candidate #3.
Each of the thread runs an iterative statement that generates "x" random numbers
between 1 to 3.
If the system generates a value of 1, that means a vote will be counted for
Candidate #1; if 2 vote will be added for Candidate #2 otherwise, it will be
credited to Candidate#3.
Note:
1. "x" (will be based on the "Number of voters")
2. If either of candidates have the same number of votes, then output text must say
"No Winner"
Sample output:
Enter # of voters: 3
Voter 1 Thread #1 = 1
Voter 2 Thread #1 = 3
Voter 1 Thread #3 = 2
Voter 1 Thread #2 = 1
Voter 2 Thread #2 = 3
Voter 3 Thread #1 = 1 [Voting closed]
Voter 2 Thread #3 = 2
Voter 3 Thread #2 = 1 [Voting closed]
Voter 3 Thread #3 = 2 [Voting closed]
Candidate #1 has 4 vote(s)
Candidate #2 has 3 vote(s)
Candidate #3 _has 2 vote(s)
Candidate #1 Wins!!!
Thread #1 Finished 1st
Thread #3 Finished last
Transcribed Image Text:Create a program that allows users to enter the number of voters, then generates 3 Threads. Thread #1 will be named Candidate #1, Thread #2 as Candidate #2 and Thread #3 as Candidate #3. Each of the thread runs an iterative statement that generates "x" random numbers between 1 to 3. If the system generates a value of 1, that means a vote will be counted for Candidate #1; if 2 vote will be added for Candidate #2 otherwise, it will be credited to Candidate#3. Note: 1. "x" (will be based on the "Number of voters") 2. If either of candidates have the same number of votes, then output text must say "No Winner" Sample output: Enter # of voters: 3 Voter 1 Thread #1 = 1 Voter 2 Thread #1 = 3 Voter 1 Thread #3 = 2 Voter 1 Thread #2 = 1 Voter 2 Thread #2 = 3 Voter 3 Thread #1 = 1 [Voting closed] Voter 2 Thread #3 = 2 Voter 3 Thread #2 = 1 [Voting closed] Voter 3 Thread #3 = 2 [Voting closed] Candidate #1 has 4 vote(s) Candidate #2 has 3 vote(s) Candidate #3 _has 2 vote(s) Candidate #1 Wins!!! Thread #1 Finished 1st Thread #3 Finished last
Expert Solution
steps

Step by step

Solved in 3 steps with 2 images

Blurred answer
Recommended textbooks for you
Computer Networking: A Top-Down Approach (7th Edi…
Computer Networking: A Top-Down Approach (7th Edi…
Computer Engineering
ISBN:
9780133594140
Author:
James Kurose, Keith Ross
Publisher:
PEARSON
Computer Organization and Design MIPS Edition, Fi…
Computer Organization and Design MIPS Edition, Fi…
Computer Engineering
ISBN:
9780124077263
Author:
David A. Patterson, John L. Hennessy
Publisher:
Elsevier Science
Network+ Guide to Networks (MindTap Course List)
Network+ Guide to Networks (MindTap Course List)
Computer Engineering
ISBN:
9781337569330
Author:
Jill West, Tamara Dean, Jean Andrews
Publisher:
Cengage Learning
Concepts of Database Management
Concepts of Database Management
Computer Engineering
ISBN:
9781337093422
Author:
Joy L. Starks, Philip J. Pratt, Mary Z. Last
Publisher:
Cengage Learning
Prelude to Programming
Prelude to Programming
Computer Engineering
ISBN:
9780133750423
Author:
VENIT, Stewart
Publisher:
Pearson Education
Sc Business Data Communications and Networking, T…
Sc Business Data Communications and Networking, T…
Computer Engineering
ISBN:
9781119368830
Author:
FITZGERALD
Publisher:
WILEY