2012-03-05 9 views
5

どのようにするかを学びたいのは、C#でint配列をintに変換することです。int配列をintに変換するには?

しかし、配列の値をintに追加したいとします。

例:

int[] array = {5, 6, 2, 4}; 

は、事前に任意のヘルプ5624.

おかげに等しいint型に変換されます。

+3

配列の数字が「int」に収まらない数字を構成するとどうなりますか? – Jon

+1

0 ... 9の範囲内にない配列アイテムはどうですか? –

答えて

13

は、各数字を配列内の10進数で単純に乗算します。

int[] array = { 5, 6, 2, 4 }; 
int finalScore = 0; 
for (int i = 0; i < array.Length; i++) 
{ 
    finalScore += array[i] * Convert.ToInt32(Math.Pow(10, array.Length-i-1)); 
} 
+2

少し速くするためにConvert.ToInt32(Math.Pow(10、array。(int k = 0; k

2

次のことを試してみてください。

 int[] intArray = new int[] { 5, 4, 6, 1, 6, 8 }; 

     int total = 0; 
     for (int i = 0; i < intArray.Length; i++) 
     { 
      int index = intArray.Length - i - 1; 
      total += ((int)Math.Pow(10, index)) * intArray[i]; 
     } 
+0

これは '4265'を返します - これは望ましくない結果です。 –

+0

申し訳ありませんが、あなたが正しいです、私の答えを編集しました。 –

0

あなたは小数点システムがどのように機能するかを理解している場合、これは、簡単だろう。

それでは、あなたのために説明しましょう:10進数には10進数の1桁が含まれています。

これは、あなたが(!後方)この配列を反復処理し、たとえば5624の場合は10^

で乗算する必要があるということを意味します(5 * 10^3)+(6 *^2 10)+(2 * 10^1)+(4 * 10^0)

も検討してください:http://en.wikipedia.org/wiki/Horner_scheme

2

使用あなただけ連結するこのコードを使用すると、int型の配列は非常に次のコード

String a; 
int output; 
int[] array = {5, 6, 2, 4}; 
foreach(int test in array) 
{ 
a+=test.toString(); 
} 
output=int.parse(a); 
//where output gives you desire out put 

これを使用しますEではないxactコード。

+0

-1良い解決策ではありません。文字列操作が遅いです。 –

+3

@FelixK。 OPは彼が時間に敏感なコードを必要としていたとは言わず、これは最も読みやすいコード化された答えです。 – ediblecode

+0

でも、Shadow Wizardの答えはより読みやすく、安全ですが、それは他のソリューションと比較してスピードの面で優れた解決策ではありません。 –

4

もう一つの簡単な方法:ここ

int[] array = {5, 6, 2, 4}; 
int num; 
if (Int32.TryParse(string.Join("", array), out num)) 
{ 
    //success - handle the number 
} 
else 
{ 
    //failed - too many digits in the array 
} 

トリックは、数字の文字列、配列を作る整数として、それを解析しています。

+1

最も簡単! +1。しかし、最善ではありません.. – nawfal

+0

@ nawfalありがとう、私は[これは](http://stackoverflow.com/a/9564827/447356)最高だと思う、それを自分自身upvoted。 :) –

+0

私はあなたを愛しています。効率性が重要でない場合、これは最もクールに見えます。http://stackoverflow.com/a/9567257/661933 – nawfal

0

これはそれを行います。

public int DoConvert(int[] arr) 
{ 

    int result = 0; 

    for (int i=0;i<arr.Length;i++) 
    result += arr[i] * Math.Pow(10, (arr.Length-1)-i); 

    return result; 
} 
2
int result = 0; 
int[] arr = { 1, 2, 3, 4}; 
int multipicator = 1; 
for (int i = arr.Length - 1; i >= 0; i--) 
{ 
    result += arr[i] * multipicator; 
    multipicator *= 10; 
} 
0

そして、ちょうど楽しみのために...

arr.Select((item, index) => new { Item = item, Power = arr.Length - (index - 1) }).ToList().ForEach(item => total += (int)(Math.Pow(10, item.Power) * item.Item)); 
6
int output = array 
    .Select((t, i) => t * Convert.ToInt32(Math.Pow(10, array.Length - i - 1))) 
    .Sum(); 
+1

+1これはクールです – Richard

0
var finalScore = int.Parse(array 
    .Select(x => x.ToString()) 
    .Aggregate((prev, next) => prev + next)); 
1

あなたが( "sstream提供" を含む文字列ストリーム を使用することができます)

using namespace std; int main(){

int arr[3]={3,2,4};  //your array.. 

stringstream ss; 

ss<<arr[0]; //this can be run as a loop 
ss<<arr[1]; 
ss<<arr[2]; 


int x; 
ss>>x; 

cout<<x;  //simply the int arr[3] will be converted to int x.. 
+0

**#include ** –