1

質問があります。配列内の最大値を見つける必要があります。配列に名前 (textbox1) とお金 (texbox2) を書き込みます。私は2つのボタンを持っています。最初のボタンは配列に保存され、2番目のボタンは最大のお金で名前を書きます。

保存のコード:

    string[] name = new string[50];
    int items = 0;
    int[] money = new int[50];

    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        try
        {
            Convert.ToInt32(textBox2.Text);
        }
        catch
        {
            name[items] = textBox1.Text;
            money[items] = Int32.Parse(textBox2.Text);
            items++;        
        }
    }

そして、button2 には、最大値を検索して名前を書き込む必要があります! 私を助けてください

4

2 に答える 2

4
 private void button2_Click(object sender, EventArgs e)
 {
    int maxIndex = 0;

    for(int i = 0; i < 50; i++)
    {
        if (money[i] > money[maxIndex])            
            maxIndex = i;            
    }

    MessageBox.Show(name[maxIndex] + " has biggest value " + money[maxIndex]);
 }    
于 2012-11-27T21:08:51.373 に答える
3

配列から Max int を取得するには、 IEnumerable.Maxを使用できます。

money.Max();

しかし、同じ高額の名前が複数存在する可能性があります。おそらくこれも処理する必要があります。辞書が最適な選択肢になると思います

private Dictionary<string, int> Names = new Dictionary<string, int>();

private void button1_Click(object sender, EventArgs e)
{
    int value = 0;
    if (int.TryParse(textBox2.Text, out value))
    {
        if (!Names.ContainsKey(textBox1.Text))
        {
            Names.Add(textBox1.Text, value);
        }
    }
}

private void button2_Click(object sender, EventArgs e)
{
    if (Names.Any())
    {
        int maxMoney = Names.Max(v => v.Value);
        var names = Names.Where(k => k.Value.Equals(maxMoney));
        foreach (var name in names)
        {
            // Names with the highest money value
        }
    }
}
于 2012-11-27T21:08:06.727 に答える