2016-04-22 1 views
0

文字のセットを配列内の1つの文字列として表示しようとしていますが、プログラムを実行するたびに数字またはゼロが表示されます。 http://imgur.com/1m77YnX 右側の値と数字のセットは、複数のフォームから情報を取得するためのクラスで、左側のコードと値のセットは結果フォームのクラスです。 http://imgur.com/8X8S67u 文字は、すべて複数のフォームから得られ、すべてchr(〜)値に格納されます。結果が文字のセットではなく数字を表示しています

さらに詳しい情報が必要な場合は、お気軽にお問い合わせください。私は

public static char chrExt, chrAgr, chrCon, chrNeu, chrOpen; 
に符号

public static int chrExt, chrAgr, chrCon, chrNeu, chrOpen; 

を変更

public static string result = (chrExt + chrAgr + chrCon + chrNeu + chrOpen).ToString(); 

    public static string[] names = new string[20]; 
    public static string[] results = new string[20]; 

string name = Data.name; 
    string result = Data.result; 

    private void label2_Click(object sender, EventArgs e) 
    { 

    } 

    private void button4_Click(object sender, EventArgs e) 
    { 
     Main frm = new Main(); 
     this.Hide(); 
     frm.Show(); 
    } 

    private void btnDisplay_Click(object sender, EventArgs e) 
    { 

     Data.names[Data.i] = name; 
     Data.results[Data.i] = result; 

     Data.i = Data.i + 1; 

     lstNames.Items.Clear(); 
     lstResults.Items.Clear(); 

     for (int i = 0; i < Data.index; i++) 
     { 
      lstNames.Items.Add(Data.names[i]); 
      lstResults.Items.Add(Data.results[i]); 
     } 
    } 

EDIT

、その後、私は

public static string result 
    { 
     get { return string.Concat(chrExt, chrAgr, chrCon, chrNeu, chrOpen); } 
    } 

public static string result = (chrExt + chrAgr + chrCon + chrNeu + chrOpen).ToString(); 

を変更するには、あなたのすべてをありがとう!

答えて

1

あなたchr*変数の型intです。したがって、このライン

public static string result = (chrExt + chrAgr + chrCon + chrNeu + chrOpen).ToString(); 

整数stringに結果を変換アップ最初の合計。あなたは

public static string result = string.Empty + chrExt + chrAgr + chrCon + chrNeu + chrOpen; 

にこれを変更したり、string.Concatを使用することができます。

public static string result = string.Concat(chrExt, chrAgr, chrCon, chrNeu, chrOpen); 

しかし、もちろん、これはまだあなたがやりたいことはありません。 staticメンバーを宣言し、一度だけ初期化します。現在のところ、変数chr*はすべて0です。

コードから、これらの変数を目的の値に設定することはできません。しかし、あなたのresultは後で計算しなければなりません。

一つの方法は、プロパティとして宣言することである。

public static string Result 
{ 
    get { return string.Concat(chrExt, chrAgr, chrCon, chrNeu, chrOpen); } 
} 

または発現ボディ部材としてのC#6を有する:

public static string Result => string.Concat(chrExt, chrAgr, chrCon, chrNeu, chrOpen); 
+0

こんにちは、これは私がhttp://imgur.com/a/e1pJPを取得しているすべてです。何か不足していますか? –

+0

@AJAlJallafはい。なぜなら、 'result'はすべての変数が' 0'のときに一度だけ計算されるからです。私の答えを更新しました。 –

+0

こんにちは、サンプルを追加しないことをお詫び申し上げます。http://imgur.com/I18HTiQこれは、プログラムがどの文字をさまざまなフォームから各char変数に割り当てるかを選択する方法の例です。そして、私はどこのコードをpublic static string resultに追加するのですか? getコマンドを使用したもの(正しい用語が何であるかわからない)。 –

1

文字はそうあなたがを持って数字を加算Int16は正確には)、です。その後、String.Concatを使用します。

String test1 = ('a' + 'b').ToString(); // 195 == 97 + 98 
String test2 = String.Concat('a', 'b'); // "ab" == "a" + "b" 
あなたの場合

String result = String.Concat(chrExt, chrAgr, chrCon, chrNeu, chrOpen); 

編集:私はあなたが

public static int chrExt, chrAgr, chrCon, chrNeu, chrOpen; 

より良い選択がcharとしてcharを宣言している宣言のスクリーンショットを形成見ることができるように、 not int

public static char chrExt, chrAgr, chrCon, chrNeu, chrOpen; 

あなたはintを主張する場合は、Concatcharに変換:

String result = String.Concat(
    (char)chrExt, (char)chrAgr, (char)chrCon, (char)chrNeu, (char)chrOpen); 
+0

OPはで 'CHR *'変数の宣言を示し画像。実際には 'char'の代わりに' int'sです。 –

+0

こんにちは、String.Concatを使ってみました。これは私のものです... http://imgur.com/a/e1pJP、私は迷っています。 –

+0

@AJ Al Jallaf:なぜpublic static int chrExt、chrAgr、chrCon、chrNeu、chrOpenを宣言しますか? 'public static char chrExt、chrAgr、chrCon、chrNeu、chrOpen;' int'を 'char'に変更しました –

関連する問題