Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.HashMap;
- import java.util.Iterator;
- import java.util.Map;
- import java.util.Scanner;
- import java.util.TreeMap;
- public class Main {
- private static final String CHECKIN = "C";
- private static final String ATAQUE = "H";
- private static final String PONTO = "K";
- private static final String ERRO = "E";
- private static final String BLOQUEIO = "B";
- private static final String DEFESA = "D";
- private static final String RELATORIO = "R";
- private static double numeroPartidas = 0;
- private static Jogador[] time = new Jogador[55];
- public static void main(String[] args) {
- Scanner sc = new Scanner(System.in);
- String linha;
- while (sc.hasNextLine()) {
- linha = sc.nextLine();
- linha = formataComando(linha);
- String splitLinha[] = linha.split(" ");
- switch (splitLinha[0]) {
- case CHECKIN:
- checkin(linha, true);
- break;
- case ATAQUE:
- ataque(linha);
- break;
- case PONTO:
- ponto(linha);
- break;
- case ERRO:
- erro(linha);
- break;
- case BLOQUEIO:
- bloqueio(linha);
- break;
- case DEFESA:
- defesa(linha);
- break;
- case RELATORIO:
- relatorio();
- break;
- default: // add jogadores no CHECKIN
- checkin(linha, false);
- }
- }
- }
- private static String formataComando(String linha) {
- if (linha.charAt(0) == ' ') {
- linha = linha.substring(1);
- }
- return linha;
- }
- private static void ataque(String linha) {
- int numeroJogador = pegaJogador(linha);
- time[numeroJogador].ataques++;
- }
- private static void relatorio() {
- Jogador timeEstatistica = new Main().new Jogador();
- System.out.println("Player Hit Pct KPG BPG DPG");
- System.out.println("-----------------------------------------");
- for (int numJogador = 0; numJogador < 55; numJogador++) {
- if(time[numJogador] != null){
- timeEstatistica.ataques += time[numJogador].ataques;
- timeEstatistica.bloqueios += time[numJogador].bloqueios;
- timeEstatistica.defesas += time[numJogador].defesas;
- timeEstatistica.erros += time[numJogador].erros;
- timeEstatistica.pontos += time[numJogador].pontos;
- imprimeEstatisticaJogador(numJogador, time[numJogador]);
- }
- }
- imprimeEstatisticaTeam(timeEstatistica);
- time = new Jogador[55]; // reset
- numeroPartidas = 0; // reset
- }
- private static void imprimeEstatisticaTeam(Jogador timeEstatistica) {
- double hit = (timeEstatistica.pontos - timeEstatistica.erros)
- / (double) (timeEstatistica.pontos + timeEstatistica.erros + timeEstatistica.ataques);
- double kpg = timeEstatistica.pontos / numeroPartidas;
- double bpg = timeEstatistica.bloqueios / numeroPartidas;
- double dpg = timeEstatistica.defesas / numeroPartidas;
- if (hit < 0) {
- System.out.format("%-8s%-5.3f%9.3f%9.3f%9.3f\n\n", "team", hit, kpg, bpg, dpg);
- } else {
- System.out.format("%-8s%c%-5.3f%9.3f%9.3f%9.3f\n\n", "team", '+', hit, kpg, bpg, dpg);
- }
- }
- private static void imprimeEstatisticaJogador(int numJogador, Jogador jogador) {
- double hit = 0;
- if ((jogador.pontos + jogador.erros + jogador.ataques) != 0) {
- hit = (jogador.pontos - jogador.erros) / (double) (jogador.pontos + jogador.erros + jogador.ataques);
- }
- double kpg = jogador.pontos / jogador.numeroPartidas;
- double bpg = jogador.bloqueios / jogador.numeroPartidas;
- double dpg = jogador.defesas / jogador.numeroPartidas;
- String strNumeroJogador = toStrNum(numJogador);
- if (hit < 0) {
- System.out.format("%-8s%.3f%9.3f%9.3f%9.3f\n", strNumeroJogador, hit, kpg, bpg, dpg);
- } else {
- System.out.format("%-8s%c%.3f%9.3f%9.3f%9.3f\n", strNumeroJogador, '+', hit, kpg, bpg, dpg);
- }
- }
- private static String toStrNum(int numJogador) {
- if (numJogador < 10)
- return "0" + numJogador;
- return "" + numJogador;
- }
- private static void erro(String linha) {
- int numeroJogador = pegaJogador(linha);
- time[numeroJogador].erros++;
- }
- private static void bloqueio(String linha) {
- int numeroJogador = pegaJogador(linha);
- time[numeroJogador].bloqueios++;
- }
- private static void defesa(String linha) {
- int numeroJogador = pegaJogador(linha);
- time[numeroJogador].defesas++;
- }
- private static void ponto(String linha) {
- int numeroJogador = pegaJogador(linha);
- time[numeroJogador].pontos++;
- }
- private static int pegaJogador(String linha) {
- String aux[] = linha.split(" ");
- return toInteger(aux[1]);
- }
- private static void checkin(String linha, boolean incrementaPartidas) {
- int inicio = 0;
- if (incrementaPartidas) {
- numeroPartidas++;
- inicio = 2;
- }
- String jogadores[] = linha.split(" ");
- int numeroJogador = 0;
- for (int i = inicio; i < jogadores.length; i++) {
- Jogador novoJogador = new Main().new Jogador();
- numeroJogador = toInteger(jogadores[i]);
- if (time[numeroJogador] == null)
- time[numeroJogador] = novoJogador;
- else
- time[numeroJogador].numeroPartidas++;
- }
- }
- static int toInteger(String strNumber) {
- return Integer.parseInt(strNumber);
- }
- private class Jogador {
- int ataques = 0;
- int pontos = 0;
- int erros = 0;
- int defesas = 0;
- int bloqueios = 0;
- double numeroPartidas = 1;
- Jogador() {
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement