如何显示数组的最大和最小值

时间:2013-03-15 20:41:04

标签: c# arrays methods input

开始这是一项家庭作业,我遇到了一些麻烦,想要一些建议。到目前为止,我已创建此应用程序以从用户获取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;
        }

    }
}

4 个答案:

答案 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.Parseint.TryParse方法的重载。

如果允许用户输入3.14之类的非完整数字,则可以使用decimal代替int

答案 2 :(得分:1)

看起来你正在迭代数组。我会做以下事情:

  1. 创建两个int变量(分别为小和大)
  2. 将它们都设置为等于数组的第一个元素
  3. 遍历元素;
  4. 对于每个元素[i],(使用int.Parse()或等效项将元素转换为int)。
    if element [i]&gt; large,large = element [i]; if element [i]&lt;小,小=元素[i]
  5. 如果您只需要最小值和最大值,则无需排序。我会将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