I have the following task which is that:
There may be up to ten teams. Parallel Arrays are used to store the team Names, as well as to keep track of the number of Wins, Overtime Losses, and Points. After the result for the last team is entered, the program outputs a summary of each team's record in the opposite order to which they were entered.
Note: "W" is worth 2 points, "L" is worth 0 points, "O" is worth 1 point
Sample input:
3 //Option number
Toronto //phrase
W //letters that loop in a while loop
W
L
O
W
O
W
N //To close the while loop, "N" is entered
Montreal
L
L
O
L
L
W
L
L
N // To close the while loop, "N" is entered
Vancouver
W
W
O
O
L
N //To close the while loop, "N" is entered
Winnipeg
L
L
L
W
O
O
W
W
W
W
W
W
W
Q //To close the while loop and get all the results, "Q" is entered
Sample output (It outputs the results in the opposite order):
Team W O L P //States that first, Team and then Wins, Overtime, Losses, and then points. "W" is 2 points, "O" is 1 point, and "L" is 0 point
Winnipeg 8 2 3 18
Vancouver 2 2 1 6
Montreal 1 1 6 3
Toronto 4 2 1 10
I did a similar task with options 2, that requires no use of arrays, now this is options 3, which requires the use of Parallel Arrays Only
Options 2 Code:
else if (option == 2){
int pointsW = 0;
int pointsL = 0;
int pointsO = 0;
int counter = 0;
int totalpoints = 0;
String phrase = keyboard.next();
while(go){
String letter = keyboard.next();
if (letter.equals("W")){
pointsW+=2;
}
else if (letter.equals("L")){
pointsL+=0;
}
else if (letter.equals("O")){
pointsO+=1;
}
counter++;
if (letter.equals("N")){
totalpoints = pointsW + pointsL + pointsO;
counter--;
go = false;
}
}
int counter2 = 0;
int totalpoints2 = 0;
int pointsW2 = 0;
int pointsL2 = 0;
int pointsO2 = 0;
String phrase2 = keyboard.next();
while (go2){
String letter = keyboard.next();
if (letter.equals("W")){
pointsW2+=2;
}
else if (letter.equals("L")){
pointsL2+=0;
}
else if (letter.equals("O")){
pointsO2+=1;
}
counter2++;
if (letter.equals("Q")){
counter2--;
totalpoints2 = pointsW2 + pointsL2 + pointsO2;
go2 = false;
}
}
System.out.println(phrase + " has played "+counter+" games and has earned "+totalpoints+" points");
System.out.println(phrase2 + " has played "+counter2+" games and has earned "+totalpoints2+" points");
if (totalpoints > totalpoints2){
int wins = totalpoints - totalpoints2;
System.out.println(phrase + " is in first place by "+ wins + " points");
}else{
int wins2 = totalpoints2 - totalpoints;
System.out.println(phrase2 + " is in first place by "+ wins2 + " points");
}
}
How would I incorporate Parallel Arrays into Options 3 with the same idea of options 2? I'm really new to learning about parallel arrays and couldn't get any help finding information online about it.
UPDATE
else if (option == 3){
int teams = 10;
String phrase[] = new String[teams];
int wins[] = new int [teams];
int overtime[] = new int [teams];
int loss[] = new int [teams];
int points[] = new int [teams];
int x;
for (x = 0; x < teams; x++){
phrase[x] = keyboard.next();
while (go3){
String letter = keyboard.next();
if (letter.equals("W")){
wins[x]++;
}
else if (letter.equals("L")){
loss[x]++;
}
else if (letter.equals("O")){
overtime[x]++;
}
else if (letter.equals("N") || letter.equals("Q")){
points[x] = wins[x]*2+overtime[x];
go3 = false;
if (letter.equals("Q")){
break;
}
}
}
}
System.out.println("Team W O L P");
for (int i = x; i >= 0; i--){
System.out.println(phrase[i] + " " + wins[i] + " " + overtime[i] + " " + loss[i] + " " + points[i]);
}
}
}
}
ERROR I GET:
You need arrays for names, wins, losses, overtimes and points. However, when you learn more, you will better manage it by creating a custom type say, Game
which will have attributes like, name
, and a List
type attribute for recording wins, losses, overtimes etc.
import java.util.Scanner;
public class Standings {
public static void main(String[] args) {
Scanner keyboard = new Scanner(System.in);
System.out.print("Enter option: ");
int option = keyboard.nextInt();
// Number of teams
int teams = 10;
// Array for team names
String[] teamNames = new String[teams];
// Array to record total wins for each team
int[] wins = new int[teams];
// Array to record total overtimes for each team
int[] overtimes = new int[teams];
// Array to record total losses for each team
int[] losses = new int[teams];
// Array for team points
int[] points = new int[teams];
// Variable to be used as a counter for the number of games
int x;
// The program will exit when exit = true
boolean exit = false;
if (option == 3) {
System.out.println("[Enter N to end the game for a team or Q to terminate the program]");
System.out.println("------------------------------------------------------------------");
// Input and calculation
for (x = 0; x < teams && !exit; x++) {
String letter;
boolean go = true;
System.out.print("Enter the name of team " + (x + 1) + ": ");
teamNames[x] = keyboard.next();
while (go) {
System.out.print("Enter W/L/O for match result: ");
letter = keyboard.next();
if (letter.equals("W")) {
wins[x]++;
} else if (letter.equals("O")) {
overtimes[x]++;
} else if (letter.equals("L")) {
losses[x]++;
} else if (letter.equals("N") || letter.equals("Q")) {
points[x] = wins[x] * 2 + overtimes[x];
go = false;
if (letter.equals("Q")) {
exit = true;
}
}
}
}
// Output
System.out.println("Team W O L P");
for (int i = x - 1; i >= 0; i--) {
System.out
.println(teamNames[i] + " " + wins[i] + " " + overtimes[i] + " " + losses[i] + " " + points[i]);
}
}
}
}
A sample run:
Enter option: 3
[Enter N to end the game for a team or Q to terminate the program]
------------------------------------------------------------------
Enter the name of team 1: One
Enter W/L/O for match result: W
Enter W/L/O for match result: W
Enter W/L/O for match result: L
Enter W/L/O for match result: O
Enter W/L/O for match result: N
Enter the name of team 2: Two
Enter W/L/O for match result: L
Enter W/L/O for match result: L
Enter W/L/O for match result: O
Enter W/L/O for match result: W
Enter W/L/O for match result: Q
Team W O L P
Two 1 1 2 3
One 2 1 1 5