簡體   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