Duvida Exercicio - Campeonato Brasileiro

Boa Noite Pessoal,

Tenho que fazer o seguinte exercicio:

Construir uma rotina que atualize a tabela de jogos do campeonato brasileiro de 2011. Deverão ser armazenados num vetor os nomes dos clubes participantes. Em uma matriz armazene o numero de gols a favor, o numero de gols contra, saldo de gols, numero de vitorias, numero de derrotas, numero de empates e a pontuação da equipe. Esta matriz devera ser preenchida em funcao dos resultados finais de cada jogo disputado. Apos a realização de todos os jogos devera ser exibido o nome da equipe campeã, bem como também a classificação geral final.

[b]Minhas dúvidas são, na programação C eu apontaria os times para a linha que a matriz pertence ou entao criaria uma estrutura.

Como faço isso no Java?

E qual a solução melhor para esse algoritmo.
Desenhar a matriz na tela e preenche-ça. ou digitar manualmente?[/b]

Segue meu codigo iniciado abaixo:

[code]mport java.util.Scanner;

import javax.swing.JOptionPane;
public class Exercicio06 {

public static void main(String arg[])
{
    String vTimes[]= new String[20];
    int matCB[][]= new int[20][7];
    int resultado;
 
 
  for(int i =0; i <=19; i++){
	  vTimes[i]=JOptionPane.showInputDialog(null, "Entre com os times a disputar o Campeonato Brasileiro 2011");
    }
	  
  
     
     

}  

}[/code]

Boa tarde Leonardo Augusto.

Primeiro voce pode declarar esta matriz como Object, que permite voce inserir tanto valores Strings quanto Inteiros.

Segundo você teria, a meu ver, que fazer dois loops "for" aninhados, seu código ficaria assim:

    ........
    public static void main(String arg[])  
    {  
        Object matCB[][]= new Object[20][8];  // Inclui-se o nome do time
        int resultado;  
        final String[] campos = {&quot;Pontos&quot;,&quot;Vitórias&quot;,&quot;Empates&quot;,&quot;Derrotas&quot;,&quot;GolsPro&quot;,&quot;GolsContra&quot;,&quot;SaldoGols&quot;};
       
        for (int i =0; i &lt; 20; i++){  // i &lt; 20 é igual i &lt;= 19
              matCB[i][0] = JOptionPane.showInputDialog(null, &quot;Entre com o nome do time&quot;);
              for (int j = 1; j &lt;= 7; j++){ // Aqui sim começa no 1 e termina com j &lt;= 7
                    matCB[i][j] =  JOptionPane.showInputDialog(null, &quot;Entre com &quot;+campos[j]+&quot; do time&quot;);
              }
        }     
              
    } 

O detalhe é que por outro lado, se isto for um exercício, em que o professor te peça para trabalhar com matrizes, lhe traria um trabalho danado, visto que há vários inconvenientes no código acima, senão vejamos.

1º) Voce não pode entrar com todos os resultados de uma única vez, visto se tratar de um campeonato, onde os valores de cada time tem que ser inseridos jogo após jogo.

2º) Imagine o trabalho danado que te trará escrevendo códigos e implementações para inserir os valores, além do que o motivo do terceiro quesito a seguir:

3º) Qual índice da matriz voce inseriu o Time do Vasco, e qual o índice da segunda dimensão é o seu número de vitórias.

Digo isto pois, durante a implementação do seu código, voce poderá se perder, e com certeza, segundo a lei de Murphy, voce irá se perder.

O mais óbvio para isto, seria voce criar uma Classe Equipe, cujos métodos tem os nomes dos campos, e ainda assim, dentro dessa classe voce pode implementar métodos que farão os cálculos automaticamente no momento que voce, por exemplo, adiciona uma vitória.

Vamos a Classe

public class Equipe {

    private String nome = null;
    private Integer vitorias = 0, empates = 0, derrotas = 0;
    private Integer golspro = 0, golscontra = 0;
    
    public String getNome() {
        return nome;
    }
    
    public void setNome(String nome) {
        this.nome = nome;
    }

    public Integer getPontos() {
        return (vitorias * 3) + empates;
    }

    public Integer getVitorias() {
        return vitorias;
    }
    
    public void setVitorias(Integer vitorias) {
        this.vitorias = vitorias;
    }
    
    public void addVitoria() {
        this.vitorias++;
    }

    public Integer getEmpates() {
        return empates;
    }
    
    public void setEmpates(Integer empates) {
        this.empates = empates; 
    }

    public void addEmpates() {
        this.empates++;
    }

    public Integer getDerrotas() {
        return derrotas;
    }
    
    public void setDerrotas(Integer derrotas) {
        this.derrotas = derrotas;
    }

    public void addDerrotas() {
        this.derrotas++;
    }

    public Integer getGolsPro() {
        return golspro;
    }
    
    public void setGolsPro(Integer golspro) {
        this.golspro = golspro;
    }

    public void addGolsPro(Integer golspro) {
        this.golspro += golspro;
    }

    public Integer getGolsContra() {
        return golscontra;
    }
    
    public void setGolsContra(Integer golscontra) {
        this.golscontra = golscontra;
    }

    public void addGolsContra(Integer golscontra) {
        this.golscontra += golscontra;
    }

    public Integer getSaldoGols() {
        return golspro - golscontra;
    }

}

Agora veja como ficou fácil a implementação do código:

    public static void main(String[] args) {
        Equipe vasco = new Equipe();
        vasco.setNome(&quot;Vasco&quot;);
        vasco.setVitorias(17);
        vasco.setEmpates(10);
        vasco.setDerrotas(7);
        vasco.addGolsPro(51);
        vasco.addGolsContra(37);
        
        visualizarEquipe(vasco);
    }
    
    public static void visualizarEquipe(Equipe eq) {
        System.out.println(&quot;Time: &quot;+eq.getNome());
        System.out.println(&quot;Pontos = &quot;+eq.getPontos());
        System.out.println(&quot;Vitórias = &quot;+eq.getVitorias());
        System.out.println(&quot;Empates = &quot;+eq.getEmpates());
        System.out.println(&quot;Derrotas = &quot;+eq.getDerrotas());
        System.out.println(&quot;Vitórias = &quot;+eq.getVitorias());
        System.out.println(&quot;Gols pró = &quot;+eq.getGolsPro());
        System.out.println(&quot;Gols contra = &quot;+eq.getGolsContra());
        System.out.println(&quot;Saldo de gols = &quot;+eq.getSaldoGols());
    }

voce ainda pode fazer assim:

   public static void main(String[] args) {
 
        Equipe vasco = new Equipe();
        vasco.setNome(&quot;Vasco&quot;);
        vasco.setVitorias(17);
        vasco.setEmpates(10);
        vasco.setDerrotas(7);
        vasco.addGolsPro(51);
        vasco.addGolsContra(37);

        visualizarEquipe(vasco);

       // Acrescentando mais uma vitória ao Vasco
        vasco.addVitoria();
        vasco.addGolsPro(3);
        vasco.addGolsContra(1);
        
        visualizarEquipe(vasco);
        
    }
    
    public static void visualizarEquipe(Equipe eq) {
        System.out.println(&quot;Time: &quot;+eq.getNome());
        System.out.println(&quot;Pontos = &quot;+eq.getPontos());
        System.out.println(&quot;Vitórias = &quot;+eq.getVitorias());
        System.out.println(&quot;Empates = &quot;+eq.getEmpates());
        System.out.println(&quot;Derrotas = &quot;+eq.getDerrotas());
        System.out.println(&quot;Vitórias = &quot;+eq.getVitorias());
        System.out.println(&quot;Gols pró = &quot;+eq.getGolsPro());
        System.out.println(&quot;Gols contra = &quot;+eq.getGolsContra());
        System.out.println(&quot;Saldo de gols = &quot;+eq.getSaldoGols());
    }

Veja como ficou tão fácil a sua implementação com a orientação a objetos. :idea: A Linguagem Java, por ser totalmente orientada o objetos, te oferece muito, mas muito mais recursos do que voce imagina.

Repare que coloquei o atributo nome na classe equipe, porém voce pode, como mostrado no código acima, definir também as instâncias da classe Equipe, com os nomes dos times.

Um abraço.