C# 如何找到数组的最低值和最高值,以及数组的平方和反转?

C# 如何找到数组的最低值和最高值,以及数组的平方和反转?,c#,C#,我正在尝试编写一个代码,它将给出数组中的最高和最低数字,以及数组的平方和反向数组。当我运行程序时,我一直得到0,但没有其他问题,因此有些设置为错误,但我无法找出错误,因为没有错误消息。代码如下: using System; namespace ArrayMethods { class Program { static void Main(string[] args) { Console.WriteLine("Enter a

我正在尝试编写一个代码,它将给出数组中的最高和最低数字,以及数组的平方和反向数组。当我运行程序时,我一直得到0,但没有其他问题,因此有些设置为错误,但我无法找出错误,因为没有错误消息。代码如下:

using System;

namespace ArrayMethods
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Enter an array size: ");
            int someArray = Convert.ToInt32(Console.ReadLine());


            int[] Array = new int[someArray];

            String input = Console.ReadLine();

            int[] arrayPart3 = new int[10];

            ReversedArray(arrayPart3);
            for (int index = 0; index < arrayPart3.Length; index++)
            {
                Console.Write(arrayPart3[index] + "| ");
            }
            Console.WriteLine();

            Console.WriteLine("Largest is:" + ArrayMax(arrayPart3));
            Console.WriteLine("Smallest is:" + ArrayMin(arrayPart3));

            SquaredArray(arrayPart3);
            for (int index = 0; index<arrayPart3.Length; index++)
            {
                Console.Write(arrayPart3[index] + "| ");
            }
            Console.WriteLine();

            ReversedArray(arrayPart3);
            for (int index = 0; index < arrayPart3.Length; index++)
            {
                Console.Write(arrayPart3[index] + "| ");
            }

        }

        public static int ArrayMax(int[] someArray)
        {
            int highest = someArray[0];
            for (int index = 0; index < someArray.Length; index++)
            {
                if (someArray[index] > highest)
                    highest = someArray[index];
            }
            return highest;
        }

        public static int ArrayMin(int[] someArray)
        {
            int lowest = someArray[0];
            for (int index = 0; index < someArray.Length; index++)
            {
                if (someArray[index] < lowest)
                    lowest = someArray[index];
            }
            return lowest;
        }

        public static void SquaredArray(int[]someArray)
        {

            for (int index = 0; index < someArray.Length; index++)
            {
                 someArray[index] = someArray[index] * someArray[index];
            }

        }


        public static void ReversedArray(int[] someArray)
        {
            for (int index = 0; index<someArray.Length; index++)
            {
                int temp = someArray[index];
                someArray[index] = someArray[someArray.Length - 1 - index];
                someArray[someArray.Length - 1 -index] = temp;
            }

        }
    }
}

缺少分析输入的代码

下面是一个紧凑的基于linq的代码:

using System;
using System.Linq;

public class Program
{
    public static void Main()
    {
        var input = Console.ReadLine();
        // or use a fixed input: var input = "1 2 3 4";
        int[] arrayPart3 = input.Split(' ',',', ';').Select(s => int.Parse(s)).ToArray();

        Console.WriteLine("Reversed: " + string.Join("| ", arrayPart3.Reverse()));
        Console.WriteLine();

        Console.WriteLine("Largest is:" + arrayPart3.Max());
        Console.WriteLine("Smallest is:" + arrayPart3.Min());
        Console.WriteLine("Squared: " + string.Join("| ", arrayPart3.Select(i => i*i)));
        Console.WriteLine("Reversed Squared: " + string.Join("| ", arrayPart3.Reverse().Select(i => i*i)));

    }
}

正如@user287107 System.Linq所提到的,这些函数大部分都是现成的,对于平方运算,您可以使用一个简单的选择扩展方法Func

下面是我快速编写的一个ArrayUtils类,它提供了您需要的功能:

using System.Linq;

namespace StackOverflow
{
    public class ArrayUtils
    {
        public int GetMax(int[] arr)
        {
            return arr.Max();
        }

        public int GetMin(int[] arr)
        {
            return arr.Min();
        }

        public int[] GetReverse(int[] arr)
        {
            return arr.Reverse().ToArray();
        }

        public int[] SquareValues(int[] arr)
        {
            return arr.Select(x => x * x).ToArray();
        }
    }
}

LINQ的Min、Max和Reverse值得一看。我不确定你所说的数组平方是什么意思。@mjwills我所说的数组平方是指数组中的每个数字都是平方的di可能有点盲目,但看起来你并没有为要反转的数组设置任何值并执行所有这些操作。在对阵列执行任何操作之前,请先打印阵列,以检查它们是否符合预期。在我看来,您似乎正在从控制台读取arraySize而不是其他内容,但我可能完全不知道从哪里获取数组值XD。我还建议不要调用数组。@Techgeekgal19 var bob=originalArray.Selectz=>longz*z.ToArray;如果这是家庭作业,并且您对允许使用的内容有限制,那么您应该在问题中指定,否则人们会建议使用标准库函数来完成所有这些。这不是她的问题problem@Techgeekgal19用法上下文不清楚,首先是String input=Console.ReadLine;从控制台读取,但从未使用,应该操纵什么?这可能是所有内容都为0的原因,您刚刚创建了一个int[10]的空数组,用户输入被完全忽略,而不是原始的数组大小请求。向上投票,但我将这两部分分开,她的主要问题是缺少对输入的解析。Linq只是一个替代品,从技术上讲,它实际上并没有做同样的事情,因为她的数组会发生变异。我猜实际的输入解析应该是输入大小,然后是一个for循环,该循环在该大小中循环,要求数组的每个值作为读线……@KeithNicholas这种问题在SO中有效吗?因为如果这个人调试或打印了输入,他们就会知道。我这样问是因为我对此不确定。@Dzyann这是一个半模糊的区域,是一个新用户问了一个问题,其中标题确实是错误的问题,他们的问题是完全不同的,所以这个问题应该被编辑。然后这个问题就变得狡猾了,因为他们基本上忘记了做什么。那么,是的,它应该关闭。然而,对于作者难以确定其真实问题并最终得到好答案的问题,似乎有一定的容忍度。这是一个难题,那么,我们应该成为真正的学究吗?还是有点宽容?他在街上重新洗脸了很多次meta@KeithNicholas是啊,我从来不知道该怎么办。但是我们可以帮助他,并且仍然可以解决这个问题。因为我看不出这个问题如何增加价值。他完全忘了获取输入值。如果他做了MVE的事情,我可能会注意到,但我不认为我们应该刻薄。无论如何,谢谢你的澄清,这是一个灰色地带。