我试图多次使用相同的数组,但是不同的大小。我的目标是使用单个方法,然后在调用方法时应用数组大小。
以下是我的方法:
//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: "};
答案 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
打印每个字符串