• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

hardcore

Ajuda - leitura de ArrayList()

2 mensagens neste tópico

Ora bem! Neste meu primeiro post queria pedir a vossa ajuda para o seguinte caso  :-[:

Vou só inserir as partes do código importantes para a resolução do meu problema:

Classe Jogador:

namespace Projecto
{
    [serializable]
    class Jogador
    {
        private string nome;
        private double salario;
        private int[] golos = new int[34];

        /*construtor da classe Jogador*/
        public Jogador(string nom)
        {
            nome = nom;
        }

        public Jogador(string nom, double sal)
        {
            nome = nom;
            salario = sal;
        }

        /*MÉTODOS DE SAÍDA*/
        /*devolve o valor de nome*/
        public string getNome()
        {
            return nome;
        }

        /*devolve o valor de salário*/
        public double getSal()          
        {
            return salario;
        }

        /*devolve a representação textual das instâncias de jogador*/
        public override string ToString()
        {
            return ("O jogador " +nome+ " tem um salário de " +salario+ " Euros");
        }

        public Jogador()
        {
        }
    }
}

Classe Equipa:

namespace Projecto
{
    [serializable]
    class Equipa : ICloneable
    {
        private string nome;
        private ArrayList jogadores;

        /*construtor que recebe, como parâmetro, apenas o nome da Equipa*/
        public Equipa (string n) 
        {
            nome = n;
            jogadores = new ArrayList();
        }

        /*METODOS DE SAIDA*/
        /*devolve o nome da equipa*/
        public string getNome() 
        {
            return nome;
        }

        public Equipa()
        {
        }
    }
}

Classe Main

Console.WriteLine("Insira a equipa: ");
string NomeEs = Console.ReadLine();
Console.WriteLine("Introduza o nome do jogador: ");
string NomeJogS = Console.ReadLine();
                      

Equipa equiAux2 = new Equipa();
Jogador jogAux = new Jogador();

foreach (Equipa eq in equipa)
{
         if (eq.getNome() == NomeEs)
         {
               foreach (Jogador jg in jogador)
               {
                     if (jg.getNome() == NomeJogS)
                     {
                           jogAux = jg;
                                                 
                      }
          }
          Jogador jog2 = new Jogador(NomeJogS);
          Console.WriteLine(jog2.ToString());
                               
      }
}

Ora bem, o que se passa é o seguinte... O programa é constituído por uma série de  cases num deles é introduzido o nome da equipa e noutro é introduzido o nome do jogador de uma determinada equipa e o salário. Quando executo esta opção que postei (que serve para procurar o salário de um determinado jogador de uma determinada equipa) o resultado é sempre 0. Alguém consegue explicar-me onde eu tenho o erro?

Cumprimentos.

1 Abraço

*Edit*

Desculpem lá. Devia ter postado da secção de "Dúvidas e Ajudas" um moderador que mude para lá sff.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

se reparares aqui:

foreach (Jogador jg in jogador)

{

      if (jg.getNome() == NomeJogS)

          {

            jogAux = jg;                                               

          }

}

o jogAux vai receber todos os valores mas só fica com o ultimo pois estes foram substituindo os anteriores.

agora se era na realidade isso que querias fazer, peço desculpa

se não ajuda o que eu disse explica melhor o teu codigo com comentários ( \\ ).

apenas este é necessário(a principio):

Console.WriteLine("Insira a equipa: ");
string NomeEs = Console.ReadLine();
Console.WriteLine("Introduza o nome do jogador: ");
string NomeJogS = Console.ReadLine();
                      

Equipa equiAux2 = new Equipa();
Jogador jogAux = new Jogador();

foreach (Equipa eq in equipa)
{
         if (eq.getNome() == NomeEs)
         {
               foreach (Jogador jg in jogador)
               {
                     if (jg.getNome() == NomeJogS)
                     {
                           jogAux = jg;
                                                 
                      }
          }
          Jogador jog2 = new Jogador(NomeJogS);
          Console.WriteLine(jog2.ToString());
                               
      }
}

o querias dizer era classes e não cases

#EDITADO#

ja tens isto desde 27 de Maio de 2007? ja deves ter solução para isto suponho...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora