我是一名从事家庭作业的学生。我的问题是我试图根据一个数组的长度收集大量用户输入,并将这些输入返回到一个相同长度的新数组中。第二个阵列不能进行硬编码,因为它必须是动态的,并根据第一个阵列中有多少用户输入而改变。这是我的代码。
public static decimal[] PromptForDecimals(string[] array1)
{
for (int i = 0; i < array1.Length; i++)
{
Console.WriteLine("");
string inputString = Console.ReadLine();
decimal input;
while (!decimal.TryParse(inputString, out input))
{
Console.WriteLine("Please enter a number value.");
inputString = Console.ReadLine();
}
decimal[] inputArray;
inputArray[i] = input;
return inputArray;
基本上,我尝试创建一个decimal
值数组,以对应array1
的字符串值。问题是我无法将值添加到未定义的数组中,因为它们超出了范围。我尝试使用ArrayList
inputArray
,但是我收到了无效的强制转换错误。
有人有什么想法吗?
答案 0 :(得分:0)
public static decimal[] PromptForDecimals(string[] array1)
{
decimal[] inputArray = new decimal[array1.Length];
for (int i = 0; i < array1.Length; i++)
{
Console.WriteLine("");
string inputString = Console.ReadLine();
decimal input;
while (!decimal.TryParse(inputString, out input))
{
Console.WriteLine("Please enter a number value.");
inputString = Console.ReadLine();
}
inputArray[i] = input;
return inputArray;
答案 1 :(得分:0)
你可以用它。我希望它对你有用。
public static decimal[] PromptForDecimals(string[] array1)
{
decimal[] inputArray = new decimal[array1.Length];
for (int i = 0; i < array1.Length; i++)
{
Console.WriteLine("");
string inputString = Console.ReadLine();
decimal input;
while (!decimal.TryParse(inputString, out input))
{
Console.WriteLine("Please enter a number value.");
inputString = Console.ReadLine();
}
inputArray[i] = input;
}
return inputArray;
}
答案 2 :(得分:0)
首先,您应该将return
语句和inputArray
的声明放在for循环之外。
其次,要创建inputArray
,您只需要创建一个长度为inputArray.Length
的数组!
// remember to put this before the for loop.
decimal[] inputArray = new decimal[inputArray.Length];
在for循环中,您可以写:
// don't redeclare inputArray again!
inputArray[i] = input;
在for循环之后,返回inputArray
:
return inputArray;
答案 3 :(得分:0)
以下是解决方案。
1)使用语句decimal[] inputArray
,您只声明了一个数组,但没有创建一个数组。
2)您必须在进入循环
之前创建它 3)如下图所示,在创建数组时,您可以为其赋予与inputArray
相同数量的元素
public static decimal[] PromptForDecimals( string[] array1 )
{
decimal[] inputArray = new decimal[array1.Length];
for( int i = 0; i < array1.Length; i++ )
{
Console.WriteLine( "" );
string inputString = Console.ReadLine();
decimal input;
while( !decimal.TryParse( inputString, out input ) )
{
Console.WriteLine( "Please enter a number value." );
inputString = Console.ReadLine();
}
inputArray[i] = input;
}
return inputArray;
}
答案 4 :(得分:0)
让您的生活更轻松,并使用LINQ。所有数组的创建以及确保您使用正确的索引都是为您完成的。
public static decimal[] PromptForDecimals(string[] array1)
{
return
array1
.Select(x =>
{
Console.WriteLine(x);
string inputString = Console.ReadLine();
decimal input;
while (!decimal.TryParse(inputString, out input))
{
Console.WriteLine("Please enter a number value.");
inputString = Console.ReadLine();
}
return input;
})
.ToArray();
}