2016-05-05 3 views
1

Я борюсь с Arrays (Java)Java массив - (параллельный массив)

Так как это первый раз, чтобы узнать о Java в моей жизни, я понятия не имею, как запустить его. Я только что научился объявлять массивы и так далее. Однако это слишком сложно для меня. Я думаю, что смогу получить рекомендации, если увижу этот ответ. Кто-нибудь может мне помочь?

прог

+2

домашнее задание? :) Я бы предложил использовать класс для представления каждого члена команды вместо трех отдельных переменных. Затем вы можете создать каждый объект члена команды, когда вы загружаете их из файла, и добавьте этот объект в массив. Затем вашей функции нужно будет пройти через этот массив (или использовать лямбда) для вычисления баллов (используйте оператор if, чтобы определить, какая команда должна добавить оценку); затем сохраните цвет команды победителя как строковое значение, снова запустите, чтобы отобразить все члены команды, соответствующие этому цвету (опять же, используя оператор if). Помогает ли это? – CoolBots

+1

У вас есть ваши имена переменных. Заглавные буквы, которые в Java не очень обычны. это затруднит чтение, и ваш инструктор отнимет очки. Сделайте «Team, Member и Score» в нижнем регистре. (команда, участник и оценка.) –

+1

Кроме того, в вашем примере кода ... вы еще не используете какие-либо массивы. –

ответ

1

java.util.Scanner прочитать (API). Ваш код работает. Вы можете делать то, что хотите, с оценками, просто прочитайте их из файла и отнесите их соответствующим типам данных (целые числа) для вычисления средних баллов и т. Д.

Переменные - это строки, поэтому вы должны отнести их к номерам сделайте свой расчет.

Вы можете использовать arraylistArrayList<TeamMember> в качестве переменного экземпляра TeamMembers для ваших команд или коллекции с примитивными типами для команды, но я думаю, что Лучше всего, если вы делаете классы для команды, командного игрока и оценки что вы создание экземпляра в ваш класс боулинга. Вы можете найти эту информацию в любом месте.

import java.util.Scanner; 

//... 
Team usa = new Team(); 
Team mexico = new Team(); 
TeamMember person = new TeamMember(usa); //Harry plays for the US 
... 
Scanner in = new Scanner(System.in); 
int num = in.nextInt(); 

Если вы знаете, что каждый третий вход оценка, то вы можете проверить по модулю 3 (% 3), чтобы знать, какая итерация делится на 3..

+1

... почему Score будет отдельным классом? Разве это не поле в TeamMember (индивидуальная оценка) и Team (если вы реализуете этот класс, совокупный балл?). – CoolBots

+0

@CoolBots Возможно, вы захотите сравнить баллы с пользовательским компаратором? –

+1

Разве они не целые? Я лично думаю, что немного переборщить, чтобы создать класс оценки и пользовательский компаратор для того, что по сути сводится к int ... У вас есть прецедент для такого пользовательского компаратора? – CoolBots

0

Я выполнил около 40% вашего запроса, я думаю, этого достаточно для вас. Вы должны иметь возможность закончить его самостоятельно.

Если у вас есть дополнительные вопросы, просто оставьте комментарий. (Есть некоторые скрытые ошибки для вас, чтобы справиться с этим, вы должны иметь представление о рамках первой, только для обучения.)

import java.io.*; 
import java.util.*; 

// declaration of the class 
public class Bowling2 { 

// declare arrays below 
String Team, Member; 
int Score, Scorew, Scoreb; 
int[][] teamw = new int[10][3]; 
int[][] teamb = new int[10][3]; 

// declaration of main program 
public static void main(String[] args) throws FileNotFoundException { 

// 1. connect to input file 
Scanner fin = new Scanner(new FileReader("bowling.txt")); 

// 2) initialize array accumulators to zero 
int i, j, Scoreb, Scorew = 0 ; 

// 3) display a descriptive message 
System.out.println(
    "This program reads the lines from the file bowling.txt to determine\n" 
    + "the winner of a bowling match. The winning team, members and scores\n" 
    + "are displayed on the monitor.\n"); 

// 4) test Scanner.eof() condition 
    while (fin.hasNext()) { 
     // 5) attempt to input next line from file 
     Member = fin.next(); 
     Team = fin.next(); 
     Score = fin.nextInt(); 
     // 6) test team color is blue 
     if (Team.toString() == "blue"){ 
      // 7) then store blue member and score 
      teamb[i][0] = Member; 
      teamb[i][1] = Team; 
      teamb[i][2] = Score; 
      // 8) increase blue array accumulator 
      sumArray("blue"); 
      i++; 
     } 
     // 9) else store white member and score 
     else { 
      teamw[j][0] = Member; 
      teamw[j][1] = Team; 
      teamw[j][2] = Score; 
      // 10) increase white array accumulator 
      sumArray("white"); 
      j++; 
     }      
    } 

    // 11) if blue team score is larger 

    // 12) then display blue team as winner 

    // 13) else display white team as winner 

// 14 disconnect from the input file 
fin.close(); 

} 


// implement method `sumArray()` below 
/* 1. initialize accumulator to 0 
    2. loop over initialized array indices 
    3. increase accumulator by indexed array element 
    4. return accumulator 
*/ 
public double sumArray(string color) { 
    if (color == "blue") { 
     for (int k = 0;k < teamb.length(); k++) { 
      //do the calculation here, and return it 
     } 
    }else { 
     for (int h = 0;h < teamw.length(); h++) { 
      //do the calculation here, and return it 
     } 
    } 
} 

// implement method `printArray()` below 
/* 1. display the team name as the winner 
    2. loop over initialized array indices 
    3. display member and score for that array index 
*/ 

} 
Смежные вопросы