簡體   English   中英

將一位數字的整數數組轉換為多位數的整數

[英]Converting Int array of single digits to Int of multiple digits

我制作了一個數組,輸入為“ 12345”,並將其拆分為以下內容

0-1
1-2
2-3
3-4
4-5

然后,我將這些數字略微整理一下

0-5
1-2
2-3
3-4
4-1

完成此操作后,我想返回采用該數組並創建新訂單的int,因此我想要的輸出為“ 52341”

我雖然已經解決了這個問題,但是在運行代碼“輸入字符串的格式不正確”時出現了以下錯誤。

這是我的代碼,有人可以幫忙嗎?

C#

string result = number[i].ToString();
var intList = result.Select(digit => Int64.Parse(digit.ToString()));
Int64[] Circle = intList.ToArray();

int order = Circle.Length;
int check = 0;
while (check < order)
{
    numholder = Circle[0];
    Array.Copy(Circle, 1, Circle, 0, Circle.Length - 1);

    Circle[order - 1] = numholder;
    //string p = Circle.ToString();
    //string p = Circle.ToString();
    Int64 h = Int64.Parse(Circle.ToString());

最簡單的方法是完全跳過字符串,並使用小學數字的定義:

var res = 0L;
var mul = 1L;
foreach (var digit in Circle) {
    res += mul*digit;
    mul *= 10;
}

您也可以從數字中創建一個字符串並進行解析,但這效率較低:

var numStr = string.Join("", Circle.Select(digit => digit.ToString()));
var num = long.Parse(numStr);

我認為您的問題出在以下方面:

Int64 h = Int64.Parse(Circle.ToString());

這是因為Circle.ToString()返回Int64[] ,而這不是正確的Int64

我認為您應該在String.Join使用這一行:

Int64 h = Int64.Parse(String.Join("", Circle));

您缺少代碼,但無法對數據進行聯接嗎?

string newresult = order.Join("");

這里沒有VS,因此無法檢查代碼,但是類似的東西應該可以工作

int[] singleDigitArray = new int[] { 1, 2, 4, 5, 8};
int num = 0;
for (int i = singleDigitArray.Length - 1; i >= 0; i--)
{
    num += ((int)Math.Pow(10, singleDigitArray.Length-i-1)) * singleDigitArray[i];
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM