[Solved] How to complete this program? [closed]


You have many problem in your code and I will try to explain them one by one:

First, you need to rewrite your class Giocatore:

class Giocatore
{
    public string Nome {get;set;}
    public string CantantePreferito {get;set;}
    public int Voto {get;set;}

    public Giocatore(string nome, string cantante, int voto)
    {
       this.Nome = nome;
       this.CantantePreferito = cantante;
       this.Voto = voto;
    }
}

Here I have removed the method that get the inputs. I have added some public properties to have an instance of the class Giocatore preserve its internal values and added a constructor that gets the three values. Your current code declares the variable as local to the NomeECantante method and as such they are lost when you exit from that method.
(The constructor could also be omitted but having it will make life easier when you build an instance of Giocatore)

Now in main code you change your logic to something like this

static void Main(string[] args)
{
    ....
    int GiocatoriN;
    if(!Int32.TryParse(Console.ReadLine(), out GiocatoriN))
    {
        Console.WriteLine("Write a number please");
        return;
    }

    List<Giocatore> giocatori = new List<Giocatore>();

    for (int i = 0; i < GiocatoriN; i++)
    {
        Giocatore g = LoadGiocatoreData();
        if(g == null)
          return;
        giocatori.Add(g);
    } 
}

Here I have added some checking on the input entered and removed the useless string array to use a List<Giocatore> that allows adding any number of elements.
Finally the input of the data for a new Giocatore is located in a method external to the class

 public Giocatore LoadGiocatoreData()
 {
     string nome;
     string cantante;
     int voto;

     Console.WriteLine("Inserisci il tuo nome: ");
     nome = Console.ReadLine();
     Console.WriteLine(nome + " inserisci il tuo cantante preferito: ");
     string cantante = Console.ReadLine();
     Console.WriteLine("Dai un voto da 1 a 10 a " + cantante + ": ");
     if(!Int32.TryParse(Console.ReadLine(), out voto))
     {
         Console.WriteLine("Please insert a number");
         return null;
     }

     Giocatore g = new Giocatore(nome, cantante, voto);
     return g;
 }

At this point the List in the main method contains the elements of type Giocatore that your user has requested ath the beginning of your code. You could check this by a simple loop like this

 foreach(Giocatore g in giocatori)
 {
     Console.WriteLine("Giocatore:" + g.Nome);
     Console.WriteLine("Cantante:" + g.CantantePreferito);
     Console.WriteLine("Voto:" + g.Voto.ToString());
     Console.WriteLine("----------------------------------);
 }

5

solved How to complete this program? [closed]