2012-01-18 4 views
1

의 int로 단일 숫자 int 배열 변환 I는 입력을 배열 말하는 "12345"을 만든 다음여러 자리

0 아래로 그것을 분할 - 2
2 - 1
1 - 3
3-4
4-5

그때 조금 얻기 위해이 숫자를 셔플

0-5
1-2 2-3
3 - 4
4 - 한번 1

내가이 배열을 가지고 새로운 순서 int를 생성 되돌리려 수행 그래서 원하는 출력은 "52,341"

비록 내가 '입력 문자열이 올바른 형식이 아니 었습니다.'라는 코드를 실행할 때 다음 오류가 발생했습니다.

내 코드는 누구에게나 도움이 될 수 있습니까?

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()); 
+2

Circle.ToString()은 _System.Int64 [] _을 제공합니다. Int64에 구문 분석되지 않습니다. – Nailuj

답변

2

나는 당신의 문제가이 라인에 생각 :

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

Circle.ToString() 때문에 반환 Int64[]이며, 이것은 당신이 String.Join와 함께이 줄을 사용한다고 생각 올바른 Int64

아니다 :

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

VM 코드를 다시 사용해 주셔서 감사합니다. - 도움을 청하기 위해 다른 모든 사람들에게도. – monkeylumps

0

당신은 코드 누락하지만 당신은 데이터에 가입 할 수 없었다?

string newresult = order.Join(""); 

코드를 확인할 수 없습니다 그래서 여기에 VS 없어하지만 그런 일이 모두 문자열을 생략하고,의 정의를 사용하는 것입니다 할

+0

전에 .join 메서드를 사용한 적이 없으며 제대로 작동하지 않습니다. – monkeylumps

0
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]; 
} 
3

간단한 일을 작동해야 초등학교에서 여러 자리 번호 : 당신은 또한 당신의 자리에서 문자열을 생성하고 구문 분석 할 수도 있지만

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);