我将如何处理并行数组以在Java中存储不同类型的信息 [英] How would I approach Parallel Arrays to store different types of information in java
问题描述
我有以下任务:
最多可能有十支队伍。并行数组用于存储团队名称,并跟踪获胜次数,加班损失和积分。输入最后一个团队的结果后,程序将以与输入相反的顺序输出每个团队的记录摘要。
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.
注意: W是值2分, L值0分, O值1分
Note: "W" is worth 2 points, "L" is worth 0 points, "O" is worth 1 point
样本输入:
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
样本输出(它以相反的顺序输出结果):
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
我用选项2做过类似的任务,需要不使用数组,现在是选项3,仅需要使用并行数组
选项2代码:
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");
}
}
如何将并行数组并入选项3选项2的想法相同?我真的是学习并行数组的新手,无法在网上找到有关它的任何帮助。
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.
更新
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]);
}
}
}
}
错误我得到了:
推荐答案
您需要用于排列名称,获胜,损失,加班和分数的数组。但是,当您了解更多信息时,可以通过创建一个自定义类型,例如 Game
来更好地管理它,该属性将具有 name
和 List
类型属性,用于记录获胜,失败,加班等情况。
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]);
}
}
}
}
示例运行:
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
这篇关于我将如何处理并行数组以在Java中存储不同类型的信息的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!