亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在不使用其他類庫的情況下編寫 toString 方法

如何在不使用其他類庫的情況下編寫 toString 方法

C#
哈士奇WWW 2022-07-23 09:30:22
我想編寫自己的 toString 方法,因為我不允許使用任何類庫。所以我看了一下 toString 方法的源代碼,但是它使用了很多其他的庫。我想將整數轉換為字符串,但我不確定如何逐個處理數字。如果我能做到這一點,我可以繼續將整數轉換為字符,最后將所有字符相加為字符串。有人可以幫忙嗎?
查看完整描述

3 回答

?
喵喵時光機

TA貢獻1846條經驗 獲得超7個贊

這是與其他答案類似的方法。

要點:

  1. 我們通過找到一個數字除以 10 時的余數來計算最后一位數字(即lastDigit = number % 10;

  2. 要丟棄數字的最后一位,只需將其除以 10。

  3. 當以這種方式查找數字時,它們當然會以相反的順序返回(最低有效數字在前),因此您必須顛倒數字才能得到正確的答案。一種方法是從 char 數組的末尾存儲到開頭。

  4. 負數必須特別處理。最簡單的方法是記下數字是負數,以便-在適當的時候添加符號;然后,否定數字使其為正。但是,請注意,您不能 negate int.MinValue,因此必須特別處理。

  5. 您可以通過將數字char添加到 char'0'并將結果轉換回char.

這是一種使用這些要點的方法:

public static string MyToString(int number)

{

    if (number == int.MinValue)

        return "-2147483648"; // Special case.


    char[] digits = new char[64]; // Support at most 64 digits.

    int last = digits.Length;

    bool isNegative = number < 0;


    if (isNegative)

        number = -number;


    do

    {

        digits[--last] = (char) ('0' + number % 10);

        number /= 10;

    }

    while (number != 0);


    if (isNegative)

        digits[--last] = '-';


    return new string(digits, last, digits.Length-last);

}

我認為您要問的主要部分是如何一個接一個地獲取數字的數字,do/while上面的循環回答了這個問題。


查看完整回答
反對 回復 2022-07-23
?
繁星coding

TA貢獻1797條經驗 獲得超4個贊

我不明白為什么不允許您使用任何庫。但是,如果您需要完全手動進行轉換,您可以這樣做


private static string IntToString(int i)

{

    string[] digits = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"};

    string sign = (i < 0 ? "-" : "");

    var absI = (i < 0 ? -i : i);

    string result = "";

    while (absI != 0)

    {

        int digit = absI % 10;

        result = digits[digit] + result;

        absI = (absI - digit) / 10;

    }

    return sign + result;

}

上面的代碼不能正常工作為零。如果您需要,添加起來非常簡單。


查看完整回答
反對 回復 2022-07-23
?
犯罪嫌疑人X

TA貢獻2080條經驗 獲得超4個贊

例如,您可以將您的號碼拆分為單個字符:


// Note that this is just for example and for positive numbers only.

IEnumerable<char> ToChar(int num)

{

    while (num > 0)

    {

        // adding '0' to number will return char for that number

        char ch = (char)(num % 10 + '0');

        num /= 10;

        yield return ch;

    }

}

然后基于此創建新字符串:


string ToString(int num)

{

    // ToChar will return char collection in reverse order,

    // so you will need to reverse collection before using.

    // Well in your situation you will be probably needed to

    // to write Reverse method by yourself, so this is just for

    // working example

    var chArray = ToChar(num).Reverse().ToArray();

    string str = new string(chArray);

    return str;

}

和用法:


int i = 554;

string str = ToString(i);

參考:DotNetFiddle 示例(使用簡化的 ToChar() 方法)


查看完整回答
反對 回復 2022-07-23
  • 3 回答
  • 0 關注
  • 120 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號