internal double[] fillingArray()
{
a = 1.5;
b = .5;
for (i = 0; i<10; i++)
{
c = a * b;
a = a + 1;
b = b + 1;
arrayInt[i] = c;
}
return arrayInt;
}
我想调用一个方法fillingArray((,它存储数组变量并通过displayAll((主方法显示这些变量。 返回 arrayInt 时,控制台将显示系统。数组中的值加倍但不是。
您需要像使用填充函数一样解析每个值:
static void Test()
{
Display(CreateFilledArray());
}
static internal void Display(double[] array)
{
foreach ( var value in array )
Console.WriteLine(value);
}
static internal double[] CreateFilledArray()
{
var result = new double[10];
double a = 1.5;
double b = .5;
for ( int index = 0; index < 10; index++ )
{
result[index] = a * b;
a = a + 1;
b = b + 1;
}
return result;
}
输出
0,75
3,75
8,75
15,75
24,75
35,75
48,75
63,75
80,75
99,75
我感觉你在做这样的事情:
Console.WriteLine(arrayInt);
并期望它显示数组中所有数字的表示形式。C# 不这样做;它只会打印出数组的类型,即System.Double[]
这里实际发生的事情是,WriteLine 只能写出"看起来很合理的东西",如果它是它可以专门处理的东西。WriteLine可以处理许多不同的事情:
Console.WriteLine(1); //handles numbers
Console.WriteLine('1'); //handles characters
Console.WriteLine("1"); //handles strings
WriteLine不能处理数组;它们被传递给处理对象的 WriteLine 版本,该版本的 WriteLine 所做的唯一事情就是在传入的对象上调用 ToString((,然后打印 ToString 返回的字符串结果。当我们在数组上调用 ToString 时,它只返回数组的类型,而不是数组中的值
这就是为什么你看到"System.Double[]"出现在控制台中的原因
您必须遍历数组,逐个打印出值(您还可以执行其他技巧,但它们比您目前知道的更高级 C#,如果这是一项学术作业,推荐它们是不明智的(
我可以看到您知道如何循环,所以我将把它的实现留给您
我将方法修改为字符串并返回一个字符串值连接数组值 - 这有效
internal string fillingArray()
{
a = 1.5;
b = .5;
for (i = 0; i<10; i++)
{
c = a * b;
a = a + 1;
b = b + 1;
arrayInt[i] = c;
//astr array string
astr = astr + arrayInt[i].ToString() + " ";
}
return astr;