C# 方法,该方法比较两个数组,查找最大数并打印最大数的数组

C# 方法,该方法比较两个数组,查找最大数并打印最大数的数组,c#,arrays,C#,Arrays,如果我有两个double-like类型的数组 double [] a1 = { 15, 7, 8 }; double [] a2 = { 10, 5 }; 我想创建一个方法,将这些参数作为参数,比较它们,并打印包含最大数量的完整数组?像这样: double[] result = HasLargestElement(a1,a2); foreach (double x in result) { Console.WriteLine(x); } 我正在努力学习如何以一种更简单的方式来实现这一

如果我有两个double-like类型的数组

double [] a1 = { 15, 7, 8 };
double [] a2 = { 10, 5 };
我想创建一个方法,将这些参数作为参数,比较它们,并打印包含最大数量的完整数组?像这样:

double[] result = HasLargestElement(a1,a2);
foreach (double x in result)
{
    Console.WriteLine(x);
}
我正在努力学习如何以一种更简单的方式来实现这一点,然后将其应用到我的项目中,但我不知道该如何实现。。我是一个真正的c#初学者,所以请记住这一点,刚开始时没有多少经验

更新:

代码现在如下所示:

class Largest
{
    double[] a1 = { 15, 7, 8 };
    double[] a2 = { 10, 5, 14, 3 };


    static void Main(string[] args) {
    public double[] LargestElement(double[] a1, double[] a2)
    {
        var v1 = a1.Max();
        var v2 = a2.Max();

        if (v1 > v2)
            return v1;
        return v2;
    }

    public double HasLargestElement(double[] a1, double[] a2)
    {
        return a1.Max() > a2.Max() ? a1 : a2;
    }
}
但我收到一个编译器错误:

无法将类型“double[]”隐式转换为“double”


有人看到问题吗?如前所述,我是在两天前开始做这件事的。如果有人能编辑我的代码,那将是令人惊讶的,我只想看看它是如何正常工作的

您所需要的是“haslaterstelement”数组中的以下内容

if (a1.Max() > a2.Max()){
     return a1;
}
else return a2;

下有更多信息,您只需在“haslaterstelement”数组中输入以下内容

if (a1.Max() > a2.Max()){
     return a1;
}
else return a2;
下面有更多的信息

这个怎么样

public double LargestElement(double[] a1, double[] a2)
{
    var v1 = a1.Max();
    var v2 = a2.Max();

    if(v1>v2)
       return v1;
    return v2;
}

public double[] HasLargestElement(double[] a1, double[] a2)
{
    return a1.Max() > a2.Max() ? a1 : a2;
}
这个怎么样

public double LargestElement(double[] a1, double[] a2)
{
    var v1 = a1.Max();
    var v2 = a2.Max();

    if(v1>v2)
       return v1;
    return v2;
}

public double[] HasLargestElement(double[] a1, double[] a2)
{
    return a1.Max() > a2.Max() ? a1 : a2;
}

您可以使用
Linq
扩展方法来实现这一点

using System.Linq;

var result = a1.Max() > a2.Max() ? a1 : a2;
foreach (var x in result)
    Console.WriteLine(x);

您可以使用
Linq
扩展方法来实现这一点

using System.Linq;

var result = a1.Max() > a2.Max() ? a1 : a2;
foreach (var x in result)
    Console.WriteLine(x);

这应该可以帮你

double [] a1 = {15, 7, 8};
double [] a2 = {10, 5};
var max = a1.Max() > a2.Max()?a1:a2;
Console.Write(string.Join(Environment.NewLine, max));
既然您希望有人修复您的代码,这样您就可以看到它是如何工作的:

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

namespace ConsoleApplication1
{
    internal class Largest
    {
        private static double[] a1 = {15, 7, 8};
        private static double[] a2 = {10, 5, 14, 3};

        private static void Main(string[] args)
        {
            var arrayWithlargestElement = HasLargestElement(a1,a2);
            Console.Write(string.Join(Environment.NewLine, arrayWithlargestElement));
            Console.ReadKey();
        }

        public static double[] HasLargestElement(double[] a1, double[] a2)
        {
            return a1.Max() > a2.Max() ? a1 : a2;
        }
    }
}

这应该可以帮你

double [] a1 = {15, 7, 8};
double [] a2 = {10, 5};
var max = a1.Max() > a2.Max()?a1:a2;
Console.Write(string.Join(Environment.NewLine, max));
既然您希望有人修复您的代码,这样您就可以看到它是如何工作的:

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

namespace ConsoleApplication1
{
    internal class Largest
    {
        private static double[] a1 = {15, 7, 8};
        private static double[] a2 = {10, 5, 14, 3};

        private static void Main(string[] args)
        {
            var arrayWithlargestElement = HasLargestElement(a1,a2);
            Console.Write(string.Join(Environment.NewLine, arrayWithlargestElement));
            Console.ReadKey();
        }

        public static double[] HasLargestElement(double[] a1, double[] a2)
        {
            return a1.Max() > a2.Max() ? a1 : a2;
        }
    }
}
几乎是全新的代码,让它正常工作



几乎是全新的代码,可以正常工作。

您将如何手动执行?忘记代码,编写算法。一旦您满意了,就编写代码。
a1.Max()>a2.Max()?a1:a2
@AndersOnander,在您刚才共享的当前代码中,您需要将
public double HasLargestElement
更改为
public double[]HasLargestElement
。上面的代码中有很多错误,您的主方法中有两个方法,您没有足够的右大括号。HasLargestElement在应该返回double[]时返回double。看起来你对编程很陌生,你应该做一些教程。从像Hello World这样的东西开始,理解定义和语法。你将如何手动完成它?忘记代码,编写算法。一旦您满意了,就编写代码。
a1.Max()>a2.Max()?a1:a2
@AndersOnander,在您刚才共享的当前代码中,您需要将
public double HasLargestElement
更改为
public double[]HasLargestElement
。上面的代码中有很多错误,您的主方法中有两个方法,您没有足够的右大括号。HasLargestElement在应该返回double[]时返回double。看起来你对编程很陌生,你应该做一些教程。从Hello World开始,了解定义和语法。我想返回包含最大数组的完整数组element@AndersOnander也添加了func,您看到问题可能在哪里了吗?这不会编译,是吗?@abatishchev不熟悉C#语法,但我认为第二种方法应该返回双数组-
double[]
。有一个悬而未决的编辑。我想返回容纳最大数组的完整数组element@AndersOnander还为此添加了func您看到问题可能在哪里了吗?这不会编译,是吗?@abatishchev不熟悉C#语法,但我认为第二个方法应该返回双数组-
double[]
。有一个悬而未决的编辑。我喜欢string.Join,但考虑到OP的示例环境。换行符似乎比“,”更适合分隔符?我喜欢string.Join,但考虑到OP的示例环境。换行符似乎比“,”更适合分隔符?@abatishchev为什么?它根据Anders的要求返回正确的数组。我要说的是,其他一些方法更简洁。与
返回a1.Max()>a2.Max()的区别是什么?a1:a2上面第一次给出的答案是…?我提交答案时,答案不在这里,但这是一个比我的答案更整洁的解决方案。@abatishchev为什么?它根据Anders的要求返回正确的数组。我要说的是,其他一些方法更简洁。与
返回a1.Max()>a2.Max()的区别是什么?a1:a2上面第一次给出的答案是….?我提交答案时没有,但这是一个比我更整洁的解决方案。