【问题标题】:Find the highest number in array , using while or for?使用 while 或 for 查找数组中的最高数字?
【发布时间】:2012-11-27 21:04:03
【问题描述】:

请我有一个问题,我需要找到数组中的最大值。人们将向数组写入姓名(textbox1)和金钱(texbox2)。我有 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需要搜索最大值并写上名字!请帮帮我

【问题讨论】:

  • 您的 try/catch 在我看来有点可疑 - 我认为这不会达到您的预期。
  • @DaveZych 这是获得最大值的一种非常糟糕的方法。您只需要进行线性搜索。
  • @PetrNikolkyMedvídek - 当你完全迷失在一项任务中时,向你的老师寻求帮助可能是个好主意。这样他们就会知道学生在哪里卡住了,以及需要更详细地讨论哪些主题。
  • C# Array Maximum的可能重复

标签: c# arrays


【解决方案1】:
 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]);
 }    

【讨论】:

  • @PetrNikolkyMedvídek 顺便说一句,如果这是一个家庭作业,那么我认为你应该在问题中添加适当的标签(这个建议也适用于你未来的问题)
  • 不,我需要这个程序来与玩朋友一起获得 FIFA13 分数。
【解决方案2】:

要从数组中获取 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
        }
    }
}

【讨论】:

  • 一个可能的问题是Max/Min 至少需要一个元素 :( 所以请注意这种极端情况,否则 LINQ 确实很适合这个。
猜你喜欢
  • 1970-01-01
  • 2019-04-27
  • 1970-01-01
  • 1970-01-01
  • 2015-01-27
  • 1970-01-01
  • 1970-01-01
  • 2011-09-09
  • 1970-01-01
相关资源
最近更新 更多