2012-01-18 12 views
1

のintに一桁のint配列を変換する私は入力を取る配列言う「12345」を作っていると、次の複数桁

0にダウンし、それを分割 - 2
2 - 1
1 - 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()); 
+2

Circle.ToString()はあなたに_System.Int64 [] _を与えますInt64に解析されません。 – Nailuj

答えて

2

私はあなたの問題は、この行であると思う:

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

Circle.ToString()戻りInt64[]、そしてこれが正しいInt64

ではありませんが、私はあなたがString.Joinと、このラインを使用する必要があると思うので、これは、 :

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