- ベストアンサー
文字列の加算
OS :WindowsXP Pro SP1 開発環境:VisualStudio .NET 2003 開発言語:C# 開発形態:Windowsアプリケーション プログラミング初心者です。どうかよろしくお願い致します。 現在、あるアプリケーションを作成しております。 その中で、数値の入った文字列を受け取り、それを全て加算しようとしております。 例えば、 引数の文字列が"123456789"だとしたら、そのメソッド内で1+2+3+4+5+6+7+8+9を計算し、答えを返却値とする。 私は文字列をint型にキャストして計算しようと思ったのですが、うまくキャストできません。string型はint型にキャストできないのでしょうか? また他に文字列の数値の加算をする方法がありましたら、どなたかご教授お願い致します。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
一桁ごとの加算…ということでよろしいですね? それならば、int.Parseしただけでは1億2345万6789になってしまいます。 複雑な話しですが、 foreachで一文字ずつまわし、あらかじめ用意した整数に足しあわせていく…という流れになるでしょうか。 string str = "123456789"; int n = 0; foreach(char c in str) { n += int.Parse("" + c); } MessageBox.Show(n.ToString()); と言う感じで。
その他の回答 (3)
- rot-N
- ベストアンサー率27% (118/432)
文字列と言っても1文字づつの文字の配列なんでs[]="123456"は、s[0]='1'、s[2]='2'・・・です。 で、「v=(*s++)-'0';」でi番目の文字を数値に出来ます。 これと、文字列の最期は'\0'と言うことを使えば、プログラムは出来ますね。 これ以上は、貴方のためにならないので書きません。
お礼
返事が遅くなり大変申し訳ありません。 ご回答ありがとうございました。 rot-N様の処理方法は他の方々と少し違うみたいですね。こちらの方法でも実装可能ということですよね。rot-N様の方法でも実装してみたいと思います。 アドバイスありがとうございました。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
using System; public class stringNumbersSum { public static void Main() { String str = "123456789"; double sum=0; foreach(char c in str){ sum += Char.GetNumericValue(c); } // 表示 Console.Write( "{0}",sum); } }
お礼
返事が遅くなり大変申し訳ございません。 ご回答ありがとうございました。 BLUEPIXY様には以前にもご回答を戴きました。いつもありがとうございます。 BLUEPIXY様のアドバイスを参考に、思い通りの処理ができました。本当にありがとうございました。 これから、プログラミングの勉強に励みたいと思います。
- ken5725
- ベストアンサー率24% (10/41)
これでできると思います string str = "1"; int i; i = System.Int32.Parse(str);
お礼
返事が遅くなり、大変申し訳ありません。 ご回答ありがとうございました。 おかげさまで、思い通りの処理ができました。 ありがとうございました。
お礼
返事が遅くなり大変申し訳ございません。 ご回答ありがとうございました。 TakamiChie様のご回答を参考にし、思い通りの処理ができました。 本当にありがとうございました。