对多个不同大小的数组使用1方法

时间:2017-10-04 15:41:48

标签: c# arrays methods

我试图多次使用相同的数组,但是不同的大小。我的目标是使用单个方法,然后在调用方法时应用数组大小​​。

以下是我的方法:

//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());
        }
    }

这就是我所说的:

PrintExcercises(new float[8]);

运行程序时出现以下错误:“Unhandled Exception:System.NullReferenceException:对象引用未设置为对象的实例。    at GymBuddy.MainProgram.PrintExcercises(Single [] lift)在C:\ Users \ xxx \ OneDrive - xxx \ CS Programs \ Serious \ GymBuddy \ GymBuddy \ Program.cs:第136行    at GymBuddy.MainProgram.DayD()在C:\ Users \ xxx \ OneDrive - xxx \ CS Programs \ Serious \ GymBuddy \ GymBuddy \ Program.cs:line 120    at GymBuddy.MainProgram.Workout()在C:\ Users \ xxx \ OneDrive - xxx \ CS Programs \ Serious \ GymBuddy \ GymBuddy \ Program.cs:第40行    at GymBuddy.MainProgram.Main(String [] args)在C:\ Users \ xxx \ OneDrive - xxx \ CS Programs \ Serious \ GymBuddy \ GymBuddy \ Program.cs:第19行“

编辑: msg是一个数组,其中包含在特定日期执行的各种健身运动:

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: "};

1 个答案:

答案 0 :(得分:0)

错误本身表明你从尚未实例化的对象调用非静态方法,立即修复可能是将方法更改为静态方法,无论是否为类,都可以调用该方法是否实例化。

否则在程序中的其他地方制作一个新的副本GymBuddy gymBuddy = new GymBuddy()

然后你可以做gymBuddy.printexcercise(new float [8])

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

下面的替代方法

您可以尝试使用多个数组,并在其中创建一个带有开关的方法,其中每个数组都是一个数字,只需使用数字调用方法来指定数组,使用第二个数字来指定数组中的位置。 / p>

例如:

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

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

通过上述内容,您可以直接浏览所选数组并使用for each

打印每个字符串