2017-02-24 3 views
0

整数をソートして再び表示すると、6つの数値が生成されて配列に追加され、ラベルに表示されます。値 "0"Array.Sort()を使用した後に配列が空です

int[] generatedNums = new int[6]; //Array containing generated integers 

protected void BtnGenerate_Click(object sender, EventArgs e) 
{ 

    Random newRandom = new Random(); 

    for (int i = 0; i < 5; i++) 
    { 
     generatedNums[i] = newRandom.Next(1, 50); 
    } 

    lblNum1.Text = generatedNums[0].ToString(); 
    lblNum2.Text = generatedNums[1].ToString(); 
    lblNum3.Text = generatedNums[2].ToString(); 
    lblNum4.Text = generatedNums[3].ToString(); 
    lblNum5.Text = generatedNums[4].ToString(); 
    lblNum6.Text = generatedNums[5].ToString(); 

} 

protected void BtnSort_Click(object sender, EventArgs e) 
{ 
    Array.Sort(generatedNums); 

    lblNum1.Text = generatedNums[0].ToString(); 
    lblNum2.Text = generatedNums[1].ToString(); 
    lblNum3.Text = generatedNums[2].ToString(); 
    lblNum4.Text = generatedNums[3].ToString(); 
    lblNum5.Text = generatedNums[4].ToString(); 
    lblNum6.Text = generatedNums[5].ToString(); 
} 

私は両方の方法を1つに組み合わせても問題ありません。 4

for (int i = 0; i < 5; i++) 

しかし、あなたは0表示 - -

+1

'generatedNums'が宣言されている場所で追加コードを表示できますか? – hatchet

+0

[最小限の完全で証明可能な例を作成する方法] – Dispersia

+1

2番目の方法のみを実行すると、配列に数値が入力されないため、すべてゼロ... – DavidG

答えて

0

あなただけの0の値を初期化する5

lblNum1.Text = generatedNums[0].ToString(); 
lblNum2.Text = generatedNums[1].ToString(); 
lblNum3.Text = generatedNums[2].ToString(); 
lblNum4.Text = generatedNums[3].ToString(); 
lblNum5.Text = generatedNums[4].ToString(); 
lblNum6.Text = generatedNums[5].ToString(); 

をそれはまた、あなたが宣言generatedNumsに

2

を示した場合はあなたの問題はあなたということです役立つだろうWebサーバーがリクエスト間のgeneratedNums配列の状態を保持していないことを忘れてしまいます。 Webフォームは、ほとんどのWebフレームワークと同様、ステートレスです。配列をソートしようとすると、リストを再生成するか、ラベルから読み取る必要があります。あなたのクラスメンバーは要求の間に持続されません。これは、Webサーバであることああ

+1

どのように要求の間に配列の値を保持できますか? –

0

は非常に重要なディテール であり、あなたがあなたのコンストラクタまたは初期化子でこの

private int[] generatedNums 
{ 
    get { return (int[])HttpContext.Current.Session["generatedNums"]; } 
    set { HttpContext.Current.Session["generatedNums"] = value; } 
} 

のようなクリアから変数を維持することができますが、この

if (generatedNums == null) 
    generatedNums = new int[6]; 

かを追加することができますサーバーの起動時に設定する方が良い

+0

しかし、この最初のhttp://softwareengineering.stackexchange.com/questions/160947/should-session-variables-be-avoidedをお読みください。 – hatchet

+0

私は完全に帽子の使用に責任があると同意します –

+0

さて、私は今、 "System.NullReferenceException"、乱数を配列に割り当てるときになっています。私は –

関連する問題