繁体   English   中英

找到数组中的最高值,但是为字符分配了数字

[英]Finding highest value in array however with assigned numbers to characters

我有一个快速的问题

A = 10
B = 11
C = 12
D = 13

我有一个char数组“5623ADCB”

我想找到最大值D = 13,但是当我使用for循环查找最大数字时程序不识别D = 13。 相反,它输出D的ascii值,我如何确保每次遇到D时,它会被识别为13而不是它的ascii值?

谢谢大家帮助

功能配方:制作从Char到Int的地图 - 使用Max

static int Map(char c)
{
    return Int32.Parse (c.ToString(), System.Globalization.NumberStyles.HexNumber);
}

var max = "5623ADCB".Select (Map).Max ();

在这种情况下得到你13 ;)


如果您关注内存和性能,这是一个版本:

static int FindMax(string s)
{
    s = s.ToUpper ();
    var max = 0;
    for (int i = 0; i < s.Length; i++) {
        var v = Map (s [i]);
        if (v > max)
            max = v;
    }
    return max;
}

static int Map(char c)
{
    if (c >= '0' && c <= '9')
        return (int)c - (int)'0';
    if (c >= 'A' && c <= 'E')
        return (int)c - (int)'A' + 10;

    throw new ArgumentOutOfRangeException ();
}

顺便说一句:我不知道为什么你想要14如果你想要D为13 - 如果第一个是拼写错误然后你必须改变上面的Map函数(如果你不想得到幻想,那就是switch ) - as你的第一个定义与Hex所假设的完全相同。

你需要获得更大的价值吗?

var array = "5623ADCB".ToCharArray();
Console.WriteLine(array.Max());

或者,为了确保“D”被转换为“13”,将其从十六进制转换:

var array = "5623ADCB".ToCharArray();
Console.WriteLine(Convert.ToInt32(array.Max().ToString(), 16));

请注意Convert.ToInt32(string, int)方法,该方法接收数字库以转换字符串表达式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM