2016-11-02 25 views
0

c#でユーザーからの2つの文字列を入力し、配列の位置によって整数に変換して追加したい。私のコードは以下の通りです。文字列の文字列をC#で2文字の文字列に変換する

 string a = Console.ReadLine(); 
     string b = Console.ReadLine(); 
     int i,c,d,j; 
     for (i=a.Length-1;i>=0;i--) 
     { 
      c = Convert.ToInt32(a[i]); 
      d = Convert.ToInt32(b[i]); 
      j = c + d; 
      Console.WriteLine("{0} ",j); 
      Console.ReadKey(); 
     } 

このコードでは、入力 "12 21"に "99 99"などの間違った出力が表示されています。 私はc + dを加えて合計をjに入れたいと思っていました。最終的に私は大きな合計問題のコードを書いてみたいです。私はどこでミスをしていますか?

文字列「12」および「34」の出力が「46」(1 + 3および2 + 4)になることが予想されます。

+0

? –

+0

もう1つ34が12であると仮定した場合、出力は(1 + 3)4と(2 + 4)6でなければなりません。私はConvert.Toint32(a [i] .ToString())を使って整数に変換するか、ASCII値をとる必要があります。 –

答えて

0

を試してみてください。たとえ「a」が文字列であっても、c = Convert.ToInt32(a[i]);のように参照すると、何かが返されます。あなたは[i]の価値を得たいと思っています。

c = Convert.ToInt32(a[i].ToString()); 
d = Convert.ToInt32(b[i].ToString()); 
+0

Thnxメート。これは、.ToString()を追加した後に機能します。 "ToString()"について私に説明できますか? –

+0

@Himura Da Battosuai ToString()は、ほとんどのクラスに付属するメソッドです。あなたはクラスが何であるかわからない場合は... Googleはここにあなたの友人です...そしてその件に関する多くの助けがあります。しかし、基本的にToString()はObject(Class)の文字列表現を返します。あなたはそれが働いているのを見てうれしい。 – JohnG

1

ルーピングロジックは意味をなさない。

文字列の長さをループしていますか? いつも2つの数字しかないのなら、なぜあなたは最初にループしていますか?

理由だけではなく、しようとしません:

string a = Console.ReadLine(); 
string b = Console.ReadLine(); 

int c = Int.Parse(a); 
int d = Int.Parse(b); 

int j = c + d 
+0

いつも2数字ではありません。私は非常に始めている。それが動作するかどうかを確認しようとすると、ループが調整されます。 –

0

あなたのコードをinteger.Inに解析する必要があるため、ループは、任意の意味をなさない、変数cとdは代わりに、アルファベットのASCII値を取得していますあなたは[i]は、あなたが文字列を参照する方法に問題がある...あなたは何をしたい

を取得されていませんのような文字列(配列)を使用する場合

int c=Int.Parse(a); 
int d=Int.Parse(b); 
0

[i]とb [i]を文字列ファースト(ToStringメソッド)に変換するだけでなく、Int32.TryParseを使用する必要があります。後でポップアップする予期しない例外を停止することができます。

int num;

bool result = Int32.TryParse(a [i] .ToString()、out num);

(結果)//何らかのアクション他

//他のアクション

表示された場合:あなたの質問で述べたように "12 21" の文字列の期待される出力をビス何https://msdn.microsoft.com/en-us/library/f02979c7(v=vs.110).aspx

関連する問題