这是一个从控制台获取整数的函数,这部分工作正常。麻烦在于从数组中写入值的部分。
Console.WriteLine("Function get numbers...");
static int[] numbers(int[] values){
for(int ind = 0; ind < 10; ind++){
Console.WriteLine("Type a number: ");
values[ind]= int.Parse(Console.ReadLine());
}
return values;
}
numbers(new int[10]);
for(int s= 1; s < 10; s++){
Console.WriteLine(numbers(new int[s]));
}
我查看了文档,但没有找到解决方案。
Console.WriteLine("Function get numbers...");
static int[] numbers(int[] values){
for(int ind = 0; ind < 10; ind++){
Console.WriteLine("Type a number: ");
values[ind]= int.Parse(Console.ReadLine());
}
return values;
}
var values = numbers(new int[10]);
for(int s= 0; s < 10; s++){
Console.WriteLine(values[s].ToString()));
}
我认为这有效吗?我似乎没有尝试解析它
显示数组的最简单方法是使用
string.Join()
将数组的元素组合成一个以逗号分隔的字符串
int[] array = new int[] { 1,2,3,4,5 };
Console.WriteLine(string.Join(",", array));
有结果
1,2,3,4,5
您可以使用
Environment.NewLine
而不是 ","
将每个值放在新行中。
另外,请注意,在您的代码中,您在函数中使用数组作为参数,该函数填充数组然后返回它。但你不需要传递数组,只需要传递所需的数组大小
static int[] numbers(int count){
int[] values = new int[count];
for(int ind = 0; ind < 10; ind++){
Console.WriteLine("Type a number: ");
values[ind]= int.Parse(Console.ReadLine());
}
return values;
}
int[] array = numbers(10);
或者填写数组中已有的元素数量
static void numbers(ref int[] values){
for(int ind = 0; ind < 10; ind++){
Console.WriteLine("Type a number: ");
values[ind]= int.Parse(Console.ReadLine());
}
}
int[] array = new int[10];
numbers(ref array);
取决于您要创建新数组的次数,或者想要一遍又一遍地重复使用现有数组的次数。此处不需要关键字
ref
,因为您始终可以修改数组的元素,但添加它作为约定,以向读者表明函数 numbers()
确实修改了数组参数。
最后,我将逐行解释正在发生的事情,以演示为什么代码没有按预期运行
numbers(new int[10]);
这会创建一个包含 10 个元素的新数组,并将其传递给函数 numbers()
函数的结果永远不会分配给局部变量,因此永远丢失。for(int s= 1; s < 10; s++){ ... }
这是 9 次迭代(1 到 9)的循环。Console.WriteLine(numbers(new int[s]));
这会创建一个包含 s
元素(同样是 1 到 9)的新数组,并将其传递给函数。函数的结果传递给 WriteLine()
方法,其中数组的默认行为是显示类型而不是参数的内容。解决上述问题的可能方法是创建数组once并在循环中访问其元素(使用上面对
numbers()
的第一次更新)
int[] array = numbers(10);
for(int s= 0; s < array.Length; s++){
Console.WriteLine(array[s]);
}
请注意,迭代计数由
array.Length
而不是硬编码数字 10 驱动。
读完一些答案后,我有了一些想法。这现在正在发挥作用。谢谢你的帮助。
Console.WriteLine("Function get numbers...");
int[] values2 = new int[10];
static int[] numbers(int[] values){
for(int ind = 0; ind < values.Length; ind++){
Console.WriteLine("Type a number: ");
values[ind]= int.Parse(Console.ReadLine());
}
return values;
}
values2 = numbers(new int[10]);
Console.WriteLine("Array Length: " + values2.Length);
for(int i = 0; i < values2.Length; i++){
Console.WriteLine(values2[i]);
}
int[] values2 = new int[10];
int[] numbers(int[] values)
{
for (int ind = 0; ind < values.Length; ind++)
{
Console.WriteLine("Type a number, then Enter" + " " + (values2.Length - ind) + " " + "times");
values[ind] = int.Parse(Console.ReadLine());
}
return values;
}
values2 = numbers(new int[10]);
for (int n = 0; n < values2.Length; n++)
Console.Write(values2[n] + ",");