1

我正在尝试创建一个简单的程序来查找数组中的最大数。我在一个单独的类文件中创建了该方法,然后只是尝试在主页中创建该对象,并在我创建的数组上执行该方法。我知道这与我目前没有在我的方法上返回值有关,但我仍然卡住了。对不起,菜鸟问题,提前谢谢。

using System.Text;
using System.Linq;
using System.Collections.Generic;
using System;

namespace FindMax
{
    class Program
    {
        public static void Main(string[] args)
        {

            Class1 MyClass = new Class1();

            int[] myArray = new int[] {1, 3, 4, 2, 5, 2, 2, 6, 3344, 223, 35, 5656, 2, 355543, 2222, 2355, 933433};

            int y = MyClass.FindMax(myArray);
            Console.WriteLine(y);
            Console.ReadKey(true);
}}}

using System.Text;
using System.Linq;
using System.Collections.Generic;
using System;

namespace FindMax
{

    public class Class1
    {
        public int FindMax(int[] array) 
        {
            int temp = array[0];

            for (int i = 0; i < array.Length; i++)
                 {
                if (array[i] > temp)
                {
                temp = array[i];
                }
                }}}}
4

4 回答 4

2

看起来您缺少函数int最后一行上方的返回值FindMax

实际的错误是说您的方法期望int返回一个,但您的函数永远不会return是一个。

public int FindMax(int[] array) 
    {
        int temp = array[0];

        for (int i = 0; i < array.Length; i++)
         {
            if (array[i] > temp)
            {
            temp = array[i];
            }
         }
   return temp; //this
  }

或者,使用 LINQ,以下将做同样的事情

var largest = array.OrderByDescending(x => x).FirstOrDefault();

正如@MikeChristensen 指出的那样,array.Max()也有效。

var largest = array.OrderByDescending(x => x).ToList() 你可能会感兴趣,因为它会给你一个列表,你的整个列表会从最大到最小排序

于 2013-07-03T21:39:31.460 回答
1

方法签名:

public int FindMax(int[] array)

规定该方法必须返回一个Int32. 但是,它不会在任何地方返回任何内容。

您需要在方法的末尾添加一个 return 语句。也许你的意思是:

public int FindMax(int[] array) 
{
   int temp = array[0];

   for (int i = 0; i < array.Length; i++)
   {
      if (array[i] > temp)
      {
         temp = array[i];
      }
   }

   return temp; // <-- Add this
}

我还建议检查以确保array参数至少包含一个元素:

if (array == null || array.Length == 0)
   throw new ArgumentNullException("array");
于 2013-07-03T21:38:34.167 回答
1

你永远不会从你的FindMax方法中返回任何东西Class1。修复它的方法是添加一个 return 语句:

public int FindMax(int[] array)
{
    int temp = array[0];

    for (int i = 0; i < array.Length; i++)
        if (array[i] > temp)
            temp = array[i];

    return temp; // add the return statement here.
}
于 2013-07-03T21:40:05.237 回答
0

你必须返回一个值

public class Class1
        {
            public int FindMax(int[] array) 
            {
                int temp = array[0];

                for (int i = 0; i < array.Length; i++)
                     {
                    if (array[i] > temp)
                    {
                    temp = array[i];
                    }
                    }

              return temp;
    }

    }

    }
于 2013-07-03T21:40:40.700 回答