2016-06-03 22 views
0

Ich versuche ein Programm zu erstellen, das den Benutzer fragt, "wie viele Spielerdetails möchten Sie eingeben?" Nachdem sie dies eingegeben haben, wird der Benutzer aufgefordert, in jedes der Attribute dieser Spieler einzugeben.C# Wie erlaube ich einem Benutzer, Instanzvariablen einzugeben und mehrere Objekte zu erstellen?

Im Wesentlichen versuche ich, den Benutzer zu veranlassen, mehrere Objekte einer Klasse zu instanziieren. Diese

ist, was ich in die football Klasse eingetragen

class FootballPlayer 
{ 
    private string fullName; 
    private int yearBorn; 
    private double goalsPerGame; 

    // constructor 
    public FootballPlayer (string name, int year, double goals) 

    { 
    fullName = name; 
    yearBorn = year; 
    goalsPerGame = goals; 
    } 

    // read-only properties 
    public string Name; 
    { 
    get 
     { 
      return fullName; 

    public string YearBorn; 
    { 
    get 
     { 
      return yearBorn; 
     } 
    } 

    public string Goals; 
    { 
    get 
     { 
      return goalsPerGame; 
     } 
    } 

In meinem zweiten Klasse FootballPlayerApp Ich versuche, den Benutzer zu erhalten zunächst die Anzahl der Spieler geben und zum anderen die Details aller dieser Nutzer.

Ich habe die folgenden Methoden erstellt GetInput() // die der Benutzer die Anzahl der Spieler eingeben können und gibt es GetName() // die der Benutzer ein Spieler GetYear Namen eingeben können() // Das erlaubt dem Benutzer, das geb. Jahr GetGoals() einzugeben, // das es dem Benutzer erlaubt, die Anzahl der erzielten Tore einzugeben.

Ich verstehe, dass ich ein einzelnes Objekt im Hauptverfahren schaffen als

FootballPlayer player1 = new 
FootballPlayer ("Lionel Messi", 1988, 2.3); 

folgt Was ich nicht verstehe,

  • ist, wie habe ich den Namen des Objekts ((Beispiel: Player1 im obigen Beispiel) ist für jeden Spieler unterschiedlich, den der Benutzer eingibt, wenn der Benutzer eine beliebige Anzahl von Spielern eingeben kann.

  • Wie kann ich Schleife es so, dass mehrere Spieler, bis die numberOfPlayers eingegeben werden, wird erreicht

  • Wie ich die Ergebnisse angezeigt werden kann wie folgt.

zB wenn der Benutzer 2 Spieler player1 eingetragen ("Lionel Messi", 1998, 2.3) player2 ("Ronaldo", 1985, 1.4)

wie bekomme ich die Ergebnisse angezeigt werden als

Player Name Year Born  Average Goals Scored 

Lionel Messi  1998      2.3 
Ronaldo    1985      1.4 
+0

Verwenden Sie eine 'for'-Schleife, erstellen Sie n-Instanzen von' FootballPlayer' und fügen Sie sie einer 'Liste ' hinzu. Sie können dann über den Index auf jeden Spieler zugreifen, zum Beispiel Spieler 10: "FootballPlayer playerTen = playerList [9];' –

Antwort

2

, wie habe ich den Namen des Objekts (zB player1 im Beispiel oben) für jeden Spieler verschieden sein

Sie nicht. Betrachten Sie statt einzelner Variablen eine Sammlung von Objekten. Grundsätzlich, jedes Mal, wenn Sie versuchen, object1, object2, object3 usw. zu erstellen, dann möchten Sie wahrscheinlich stattdessen ein Array oder eine Sammlung von einer Art verwenden.

Dies könnte eine beliebige Anzahl von Sammlungstypen sein, sogar ein einfaches Array. Ein üblicher Typ, der in diesem Fall verwendet wird, wäre List<T>, was für Ihren Typ List<FootballPlayer> wäre.

Strukturell könnte es etwa so aussehen:

var players = new List<FootballPlayer>(); 
var numberOfPlayers = GetInput(); 
for (var i = 0; i < numberOfPlayers; i++) 
{ 
    // prompt the user to enter the next player 

    var player = new FootballPlayer(); 
    player.Name = GetName(); 
    player.Goals = GetGoals(); 
    // etc. Basically build up a FootballPlayer object from user input 

    players.Add(player); 
} 

Der Benutzer würde für jeden Spieler aufgefordert werden, und Sie können die i Variable innerhalb der Schleife nützliche Nachrichten bereitzustellen verwenden. Beispiel: "Geben Sie die Details für Player 2 ein:" oder Ähnliches.

Nachdem die Schleife beendet ist, haben Sie eine Sammlung von FootballPlayer Objekte in der players Variable.

+0

Wie würde ich das mit einem Array machen? – firepower4

+0

@ firePower4: Im Allgemeinen erlauben Standard-Arrays keine Größenanpassung. Du brauchst also zuerst die 'numberOfPlayers' und deklariere dann das Array basierend auf diesem Wert. Der Rest wäre sehr ähnlich. Aber anstatt das Array zu "hinzufügen" (wie man es mit einer "Liste " macht), würden Sie das Objekt auf einen Index im Array setzen (den Sie mit dem Wert "i" innerhalb der Schleife identifizieren können). – David

+0

Ja, das ist im Wesentlichen das, was ich bisher gemacht habe. Es wurden drei Arrays erstellt, wobei die Länge der Anzahl der Anzahl von Spielern entspricht. Ich habe dann eine while-Anweisung verwendet, um den Benutzer zur Eingabe von Informationen während Zähler firepower4