对具有不同大小的多个数组使用一种方法[重复]
Posted
技术标签:
【中文标题】对具有不同大小的多个数组使用一种方法[重复]【英文标题】:Use 1 method for multiple arrays with different sizes [duplicate] 【发布时间】:2018-03-16 02:06:52 【问题描述】:我尝试多次使用相同的数组,但大小不同。我的目标是使用单个方法,然后在调用方法时应用数组大小。
下面是我的方法:
//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]);
运行程序时出现以下错误:“未处理的异常:System.NullReferenceException:对象引用未设置为对象的实例。 在 C:\Users\xxx\OneDrive 中的 GymBuddy.MainProgram.PrintExcercises(Single[] lift) - xxx\CS Programs\Serious\GymBuddy\GymBuddy\Program.cs:line 136 在 C:\Users\xxx\OneDrive 中的 GymBuddy.MainProgram.DayD() - xxx\CS Programs\Serious\GymBuddy\GymBuddy\Program.cs:line 120 在 C:\Users\xxx\OneDrive 中的 GymBuddy.MainProgram.Workout() - xxx\CS Programs\Serious\GymBuddy\GymBuddy\Program.cs:line 40 在 C:\Users\xxx\OneDrive 中的 GymBuddy.MainProgram.Main(String[] args) - xxx\CS Programs\Serious\GymBuddy\GymBuddy\Program.cs:line 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: ";
【问题讨论】:
msg
中的Console.Write(msg[x]);
是什么?
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: ";
你为什么要传递一个数组开始? PrintExcercises
执行后,就无法访问了。
您在哪一行得到异常?
我不知道他们为什么对你的问题投了反对票。你需要你应该得到的帮助。 +1 投票赞成的问题
【参考方案1】:
错误本身表明您从尚未实例化的对象调用非静态方法,立即修复可能是将方法更改为静态方法,这将使无论其类是否被实例化都可以调用与否。
否则在程序 GymBuddy gymBuddy = new GymBuddy() 的其他地方创建一个新的课程副本
那么你就可以做 gymBuddy.printexcercise(new float[8])
========================================
下面的替代方法
您可以尝试使用多个数组并在其中创建一个带有开关的方法,其中每个数组都是一个数字,然后简单地使用一个数字来指定数组和第二个数字来指定数组中的位置。
例如:
`public static string[] CallArray(int x, int y)
switch(x)
case 1:
return arr1[y];
break;
CallArray(1,3) = "Fish";`
使用上述方法,您可以遍历选定的数组并使用 for each 循环打印每个字符串
【讨论】:
这与 OP 问题有什么关系? 您的意思不是告诉他使用列表或构造-> 复制到新数组并销毁旧数组?它为他试图实现的目标提供了一种简单而灵活的替代方法,并且不会不必要地使手头的任务复杂化。如果你提到的例子......它只是一个例子,重要的部分是方法 就最初所需的方法而言,您可以制作一个模仿列表如何增加其大小的方法,例如 arr1.copyto(arr2) 解构 arr1 并让 arr2 具有增加或减少的大小以上是关于对具有不同大小的多个数组使用一种方法[重复]的主要内容,如果未能解决你的问题,请参考以下文章