2017-10-04 2 views
-1

J'essaie d'utiliser le même tableau plusieurs fois, mais avec des tailles différentes. Mon but est d'utiliser une seule méthode, puis d'appliquer la taille du tableau lors de l'appel de la méthode.Utilisation de la méthode 1 pour plusieurs tableaux de tailles différentes

ci-dessous est ma méthode:

//print all the excercises and let the user input the weights they lifted 
    public void PrintExcercises(float[] lift) { 
     for (int x = 0; x < lift.Length; x++) 
     { 
      Console.Write(msg[x]); 
      lift[x] = float.Parse(Console.ReadLine()); 
     } 
    } 

Et voici où je l'appelle:

PrintExcercises(new float[8]); 

Je reçois l'erreur suivante lors de l'exécution du programme: « Exception non gérée: System.NullReferenceException: Référence d'objet non définie sur une instance d'un objet à GymBuddy.MainProgram.PrintExcercises (Single [] lift) dans C: \ Users \ xxx \ OneDrive - xxx \ Programmes CS \ Serious \ GymBuddy \ GymBuddy \ Program.cs: ligne 136 à GymBuddy.MainProgram.DayD() dans C: \ Users \ xxx \ OneDrive - xxx \ Programmes CS \ Serious \ GymBuddy \ GymBuddy \ Program.cs: ligne 120 à GymBuddy.MainProgram.Workout() dans C: \ Users \ xxx \ OneDrive - Programmes xxx \ CS \ Serious \ GymBuddy \ GymBuddy \ Program.cs: ligne 40 à GymBuddy.MainProgram.Main (String [] args) dans C: \ Users \ xxx \ OneDrive - xxx \ Programmes CS \ Serious \ GymBuddy \ GymBuddy \ Program.cs: ligne 19"

Edit:msg est un tableau qui contient les différents exercices de gymnastique effectuées un jour particulier:

string[] msg = new string[] { 
    "Longbar 3x: ", 
    "Preacher Bar 3x: ", 
    "Pull Down Machine 3x: ", 
    "Cable till exhaustion: ", 
    "Long Cable 3x: ", 
    "Behind Head Cable 3x: ", 
    "Behind Head Dumbells 3x: ", 
    "Cable till exhaustion: "}; 
+0

Qu'est-ce '' msg' dans Console.Write (msg [ x]); –

+0

Le msg est un tableau qui contient les divers exercices de gym effectués un jour particulier: 'string [] msg = nouvelle chaîne [] {" Longbar 3x: "," Preacher Bar 3x: "," Pull Down Machine 3x : " "câble jusqu'à l'épuisement:", "long câble 3x:", "derrière la tête 3x par câble:", "derrière la tête Haltères 3x:", " câble jusqu'à l'épuisement: « };' –

+1

Pourquoi vous passez un tableau pour commencer? Après l'exécution de 'PrintExcercises', il n'est plus accessible. –

Répondre

0

l'erreur elle-même suggère que Si vous appelez une méthode non statique à partir d'un objet qui n'a pas encore été instancié, un correctif immédiat pourrait être de changer la méthode en une méthode statique, ce qui rendrait cette dernière invitable, que sa classe soit instanciée ou non.

autrement faire une nouvelle copie de la classe quelque part ailleurs dans le programme GymBuddy gymBuddy = new GymBuddy()

alors vous pouvez juste faire gymBuddy.printexcercise (nouveau float [8])

=== ===================================

méthode alternative ci-dessous

vous pouvez essayer d'avoir plusieurs tableaux et faire une méthode avec un commutateur, où chaque tableau est un nombre et appelle simplement la méthode avec un nombre pour spécifier le ray et un second nombre pour spécifier l'emplacement dans le tableau.

par exemple:

`public static string[] CallArray(int x, int y){ 
    switch(x){ 
     case 1: 
      return arr1[y]; 
      break; 
    } 
} 

CallArray(1,3) = "Fish";` 

avec ce qui précède, vous pourriez courir à travers le réseau sélectionné et imprimer chaque chaîne avec pour chaque boucle

+0

Comment cela est-il lié à la question OPs? – PaulF

+0

vous voulez dire autre chose que de lui dire d'utiliser une liste ou de construire-> copier sur un nouveau tableau et détruire l'ancien? il offre une approche alternative simple et flexible à ce qu'il essaie de réaliser qui n'implique pas compliquer inutilement la tâche à accomplir. Si vous faites référence à l'exemple .... c'est juste un exemple la partie importante est la méthode –

+0

jusqu'à l'approche désirée originale, vous pourriez faire une méthode qui mimmicks comment une liste augmente sa taille, par exemple arr1.copyto (arr2) déconstruire arr1 et juste avoir arr2 ont la taille augmentée ou diminuée –