开始这是一项家庭作业,我遇到了一些麻烦,想要一些建议。到目前为止,我已创建此应用程序以从用户获取10个输入值并将它们存储到数组中。我将数组传递给SmallAndLarge方法,在该方法中,使用Sort()显示derermines 10个值中的最小值和最大值,但现在我必须显示用户输入的10个值中的最小值和最大值并且遇到问题。任何帮助都会很棒!!
另外一个问题我已经注意到,如果输入值1到10,则在排序和显示数组之前,将在2之前和之后。这是为什么?
namespace SmallAndLarge
{
class Program
{
static void Main()
{
int found = 0;
string[] numbers = new string[10];
for (int i = 0; i < numbers.Length; i++)
{
Console.Write("Enter ten numbers --> ");
numbers[i] = Console.ReadLine();
}
SmallestAndLargest(numbers);
}
public static int SmallestAndLargest(string[] numbers1)
{
int x;
Array.Sort(numbers1);
for (x = 0; x < numbers1.Length; ++x)
Console.Write("{0} ", numbers1[x]);
return x;
}
}
}
答案 0 :(得分:2)
您可以使用Linq
投射并返回最大/最小using Min/Max
string[] numbers = new string[] {"1","2","3","15","30","7" };
var converted = numbers.Select(int.Parse);
int largest = converted.Max();
int smallest = converted.Min();
答案 1 :(得分:1)
您将数字作为字符串。这解释了为什么"10"
出现在"2"
之前,这与"am"
在"i"
之前出现的字母排序相同。 "10"
的第一个字符是'1'
之前的'2'
。
因此,在对数组进行排序或搜索max og min值之前,需要将字符串转换为某种数字类型。例如,它可以是int
类型。您可以将它们保存在int[]
类型的数组中,而不是string[]
。
要将string
提供的Console.ReadLine
转换为int
,请使用int.Parse
或int.TryParse
方法的重载。
如果允许用户输入3.14
之类的非完整数字,则可以使用decimal
代替int
。
答案 2 :(得分:1)
看起来你正在迭代数组。我会做以下事情:
int.Parse()
或等效项将元素转换为int)。 如果您只需要最小值和最大值,则无需排序。我会将int存储到int数组而不是字符串数组中,当用户输入值时进行转换。这样,当输入无效值时,您的程序就会失败。
答案 3 :(得分:0)
这是一个非常简单,虽然冗长的回答。将值添加到List并使用Min / Max返回值。您已经使用for循环遍历列表,没有理由再进行两次。
static void Main(string[] args)
{
string[] StringValues = new string[] { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10","Not Number" };
List<int> ConvertedStrings = new List<int>();
foreach (string S in StringValues)
{
ConvertedStrings = ParseStringToInt(S, ConvertedStrings);
}
Console.WriteLine();
Console.WriteLine("Max Value: " + ConvertedStrings.Max().ToString());
Console.WriteLine("Min Value: " + ConvertedStrings.Min().ToString());
Console.ReadLine();
}
static private List<int> ParseStringToInt(string Input, List<int> ConvertedStrings)
{
int ConvertedValue = 0;
if (int.TryParse(Input, out ConvertedValue))
{
Console.WriteLine(Input + " sucessfully parsed and added...");
ConvertedStrings.Add(ConvertedValue);
return ConvertedStrings;
}
else
{
Console.WriteLine(Input + " failed to parse...");
}
return ConvertedStrings;
}
但是,sa_ddam213得到了杀手锏:P