Преобразование массива Int из одной цифры в Int из нескольких цифр - PullRequest
1 голос
/ 18 января 2012

Я создал массив, который принимает входное значение «12345» и разбивает его на следующие значения:

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

Затем я немного перемешаю эти цифры, чтобы получить

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

Как только это будет сделано, я хочу вернуть массив take и создать 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());

Ответы [ 4 ]

3 голосов
/ 18 января 2012

Самое простое, что можно сделать, это вообще пропустить строку и использовать определение многозначного числа из начальной школы:

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);
2 голосов
/ 18 января 2012

Я думаю, что ваша проблема в этой строке:

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

Это потому, что Circle.ToString() возвращает Int64[], а это не правильно Int64

Я думаю, вы должны использовать эту строку с String.Join:

Int64 h = Int64.Parse(String.Join("", Circle));
0 голосов
/ 18 января 2012
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];
}
0 голосов
/ 18 января 2012

Вам не хватает кода, но вы не можете присоединиться к данным?

string newresult = order.Join("");

Здесь нет VS, поэтому не могу проверить код, но что-то подобное должно работать

...