[英]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.