C#找到int的最大值,然后输出最大值的变量名

C#找到int的最大值,然后输出最大值的变量名,c#,C#,我在一个2d数组中循环,在每行的末尾我需要找到最大值。每行中有6个值,因此使用Math。最大重复次数可能很长。那么,除了数学,还有什么可以用的吗?之后,我不需要知道结束的值,而是需要知道最高值的变量名。有什么建议吗 这是我目前的密码 for(int col = 0; col < geneArrays.GetLength(0); col++) { for(int row = 0; row

我在一个2d数组中循环,在每行的末尾我需要找到最大值。每行中有6个值,因此使用Math。最大重复次数可能很长。那么,除了数学,还有什么可以用的吗?之后,我不需要知道结束的值,而是需要知道最高值的变量名。有什么建议吗

这是我目前的密码

        for(int col = 0; col < geneArrays.GetLength(0); col++)
                    {
                        for(int row = 0; row < geneArrays.GetLength(1); row++)
                        {
                            float G = 0f, Y = 0f, H = 0f, X = 0f, W = 0f;
                            if (geneArrays[col][row] == 'G')
                            {
                                G += 0.6f;
                            }
                            else if (geneArrays[col][row] == 'Y')
                            {
                                Y = +0.6f;
                            }
                            else if (geneArrays[col][row] == 'H')
                            {
                                H = +0.6f;
                            }
                            else if (geneArrays[col][row] == 'X')
                            {
                                X = +0.6f;
                            }
                            else if (geneArrays[col][row] == 'W')
                            {
                                W = +0.6f;
                            }
                            string nameOfVariable = nameof(Math.Max(G,Y);
                        }
                    }
for(int col=0;col

很明显,我没有正确使用nameof,我认为Math.Max会出错。

Math.Max返回两个输入值的值。在本例中,您将只知道G,Y的值。 但考虑到有多个值被完全忽略,这是没有意义的。 我建议您将它们添加到列表中,并对它们进行排序,以便找到最重要的变量:

class Program
    {
        static void Main(string[] args)
        {
            char[,] dataArray = new char[3, 10];

            //Test data input generation.
            for (int i = 0; i < 10; i++)
            {
                dataArray[0, 0] = 'G';
                dataArray[0, 1] = 'Y';
                dataArray[0, 2] = 'H';
                dataArray[0, 3] = 'X';
                dataArray[0, 4] = 'W';
                dataArray[0, 5] = 'G';
                dataArray[0, 6] = 'G';
                dataArray[0, 7] = 'Y';
                dataArray[0, 8] = 'W';
                dataArray[0, 9] = 'X';
                dataArray[1, 0] = 'G';
                dataArray[1, 1] = 'Y';
                dataArray[1, 2] = 'H';
                dataArray[1, 3] = 'X';
                dataArray[1, 4] = 'W';
                dataArray[1, 5] = 'G';
                dataArray[1, 6] = 'G';
                dataArray[1, 7] = 'Y';
                dataArray[1, 8] = 'W';
                dataArray[1, 9] = 'X';
                dataArray[2, 0] = 'G';
                dataArray[2, 1] = 'Y';
                dataArray[2, 2] = 'H';
                dataArray[2, 3] = 'X';
                dataArray[2, 4] = 'W';
                dataArray[2, 5] = 'G';
                dataArray[2, 6] = 'G';
                dataArray[2, 7] = 'Y';
                dataArray[2, 8] = 'W';
                dataArray[2, 9] = 'X';
            }



            List<List<NameAndValue>> totalList = new List<List<NameAndValue>>();


            for (int j = 0; j < 3; j++)
            {
                List<NameAndValue> geneNameValues = CreateNameAndValueList();
                for (int k = 0; k < 10; k++)
                {
                    switch (dataArray[j, k])
                    {
                        case 'G':
                            {
                                geneNameValues.First(x => x.Name.Equals('G')).Value += 0.6m;
                                break;
                            }
                        case 'Y':
                            {
                                geneNameValues.First(x => x.Name.Equals('Y')).Value += 0.6m;
                                break;
                            }
                        case 'H':
                            {
                                geneNameValues.First(x => x.Name.Equals('H')).Value += 0.6m;
                                break;
                            }
                        case 'X':
                            {
                                geneNameValues.First(x => x.Name.Equals('X')).Value += 0.6m;
                                break;
                            }
                        case 'W':
                            {
                                geneNameValues.First(x => x.Name.Equals('W')).Value += 0.6m;
                                break;
                            }
                    }
                }
                totalList.Add(geneNameValues);
            }
            int listCount = 0;
            foreach (List<NameAndValue> list in totalList)
            {
                list.Sort((x, y) => x.Value.CompareTo(y.Value));
                NameAndValue highestValue = list.Last();
                Console.WriteLine("List-count: " + listCount + " The highest value was: " + highestValue.Name + " with a score of: " + highestValue.Value);
                listCount++;
            }
        }

        public static List<NameAndValue> CreateNameAndValueList()
        {
            NameAndValue item1 = new NameAndValue() { Name = 'G', Value = 0m };
            NameAndValue item2 = new NameAndValue() { Name = 'Y', Value = 0m };
            NameAndValue item3 = new NameAndValue() { Name = 'H', Value = 0m };
            NameAndValue item4 = new NameAndValue() { Name = 'X', Value = 0m };
            NameAndValue item5 = new NameAndValue() { Name = 'W', Value = 0m };

            List<NameAndValue> valueList = new List<NameAndValue>() { item1, item2, item3, item4, item5 };
            return valueList;
        }
    }

    public class NameAndValue
    {
        public decimal Value { get; set; }
        public char Name { get; set; }
    }
类程序
{
静态void Main(字符串[]参数)
{
字符[,]数据数组=新字符[3,10];
//测试数据输入生成。
对于(int i=0;i<10;i++)
{
dataArray[0,0]=“G”;
数据数组[0,1]=“Y”;
dataArray[0,2]=“H”;
数据数组[0,3]=“X”;
数据数组[0,4]=“W”;
数据数组[0,5]=“G”;
dataArray[0,6]=“G”;
数据数组[0,7]=“Y”;
数据数组[0,8]=“W”;
dataArray[0,9]=“X”;
dataArray[1,0]=“G”;
数据数组[1,1]=“Y”;
dataArray[1,2]=“H”;
数据数组[1,3]=“X”;
dataArray[1,4]=“W”;
dataArray[1,5]=“G”;
dataArray[1,6]=“G”;
数据数组[1,7]=“Y”;
dataArray[1,8]=“W”;
dataArray[1,9]=“X”;
dataArray[2,0]=“G”;
数据数组[2,1]=“Y”;
dataArray[2,2]='H';
dataArray[2,3]=“X”;
dataArray[2,4]=“W”;
dataArray[2,5]=“G”;
dataArray[2,6]=“G”;
数据数组[2,7]=“Y”;
数据数组[2,8]=“W”;
dataArray[2,9]=“X”;
}
List totalist=新列表();
对于(int j=0;j<3;j++)
{
List geneNameValues=CreateNameAndValueList();
对于(int k=0;k<10;k++)
{
开关(数据阵列[j,k])
{
案例“G”:
{
geneNameValues.First(x=>x.Name.Equals('G')).Value+=0.6m;
打破
}
案例“Y”:
{
geneNameValues.First(x=>x.Name.Equals('Y')).Value+=0.6m;
打破
}
案例“H”:
{
geneNameValues.First(x=>x.Name.Equals('H')).Value+=0.6m;
打破
}
案例“X”:
{
geneNameValues.First(x=>x.Name.Equals('x')).Value+=0.6m;
打破
}
案例“W”:
{
geneNameValues.First(x=>x.Name.Equals('W')).Value+=0.6m;
打破
}
}
}
totalist.Add(geneNameValues);
}
int listCount=0;
foreach(总计列表中的列表)
{
list.Sort((x,y)=>x.Value.CompareTo(y.Value));
name和value highestValue=list.Last();
Console.WriteLine(“列表计数:+listCount+”最高值为:“+highestValue.Name+”,分数为:“+highestValue.value”);
listCount++;
}
}
公共静态列表CreateNameAndValueList()
{
NameAndValue item1=newnameandvalue(){Name='G',Value=0m};
NameAndValue item2=新的NameAndValue(){Name='Y',Value=0m};
NameAndValue item3=新的NameAndValue(){Name='H',Value=0m};
NameAndValue item4=新的NameAndValue(){Name='X',Value=0m};
NameAndValue item5=新的NameAndValue(){Name='W',Value=0m};
List valueList=new List(){item1,item2,item3,item4,item5};