无法显示我的最小值和最大值
Having trouble getting my min and max values to display
我正在尝试在 windows 申请表中创建 GUI。我需要这个程序从文本框中接受 10 个数字,然后它应该通过单击按钮获取它并在最后一个文本框中显示最小和最大数字。我是编码新手,我不知道如何让它工作任何帮助将不胜感激。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace sortnumbers
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private int[] numbers = new int[10];
private void button1_Click(object sender, EventArgs e)
{
string[] items = textBox1.Text.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
if (items.Length != 10)
{
MessageBox.Show("There needs to be 10 integers in the textbox, separated by spaces");
textBox1.Focus();
return;
}
for (int i = 0; i < 10; i++)
{
numbers[i] = int.Parse(items[i]);
int Maxvalue = numbers.Max();//gives the max value.
int Minvalue = numbers.Min();//gives the min value.
}
}
}
您需要将变量放在循环之外,以获得最小值。和最大。填充数组后的值:
for (int i = 0; i < 10; i++)
{
numbers[i] = int.Parse(items[i]);
}
int Maxvalue = numbers.Max();
int Minvalue = numbers.Min();
然后,如果您想在标签中显示它们,只需设置标签 Text
属性:
// lblMin and lblMax are names of your labels
lblMin.Text = Minvalue.ToString();
lblMax.Text = Maxvalue.ToString();
我不会 C#,但我猜是这样的:
for (int i = 0; i < 10; i++)
{
numbers[i] = int.Parse(items[i]);
int Maxvalue = numbers.Max();//gives the max value.
int Minvalue = numbers.Min();//gives the min value.
}
对此:
for (int i = 0; i < 10; i++)
{
numbers[i] = int.Parse(items[i])
}
int Maxvalue = numbers.Max();//gives the max value.
int Minvalue = numbers.Min();//gives the min value.
希望。
首先,您需要了解 LINQ,因为它是您处理对象集合时的生计。
- 不勾选10项;没必要。
- 不需要 for 循环。
这就是完成这项工作所必需的。
大多数时候使用 var 声明变量。
由于隐式键入和文本框仅包含数字;这有效。
Min and Max 方法是 linq 扩展方法。
var numbers = textBox1.Text.Split(' ').Select(int.Parse).ToArray();
var min = numbers.Min();
var max = numbers.Max();
更新
在您的表单中添加第二个文本框,并将此行添加到所有内容下方。
textbox2.Text = string.Format("min: {0} max: {1}", min, max);
我正在尝试在 windows 申请表中创建 GUI。我需要这个程序从文本框中接受 10 个数字,然后它应该通过单击按钮获取它并在最后一个文本框中显示最小和最大数字。我是编码新手,我不知道如何让它工作任何帮助将不胜感激。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace sortnumbers
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private int[] numbers = new int[10];
private void button1_Click(object sender, EventArgs e)
{
string[] items = textBox1.Text.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
if (items.Length != 10)
{
MessageBox.Show("There needs to be 10 integers in the textbox, separated by spaces");
textBox1.Focus();
return;
}
for (int i = 0; i < 10; i++)
{
numbers[i] = int.Parse(items[i]);
int Maxvalue = numbers.Max();//gives the max value.
int Minvalue = numbers.Min();//gives the min value.
}
}
}
您需要将变量放在循环之外,以获得最小值。和最大。填充数组后的值:
for (int i = 0; i < 10; i++)
{
numbers[i] = int.Parse(items[i]);
}
int Maxvalue = numbers.Max();
int Minvalue = numbers.Min();
然后,如果您想在标签中显示它们,只需设置标签 Text
属性:
// lblMin and lblMax are names of your labels
lblMin.Text = Minvalue.ToString();
lblMax.Text = Maxvalue.ToString();
我不会 C#,但我猜是这样的:
for (int i = 0; i < 10; i++)
{
numbers[i] = int.Parse(items[i]);
int Maxvalue = numbers.Max();//gives the max value.
int Minvalue = numbers.Min();//gives the min value.
}
对此:
for (int i = 0; i < 10; i++)
{
numbers[i] = int.Parse(items[i])
}
int Maxvalue = numbers.Max();//gives the max value.
int Minvalue = numbers.Min();//gives the min value.
希望。
首先,您需要了解 LINQ,因为它是您处理对象集合时的生计。
- 不勾选10项;没必要。
- 不需要 for 循环。
这就是完成这项工作所必需的。 大多数时候使用 var 声明变量。 由于隐式键入和文本框仅包含数字;这有效。 Min and Max 方法是 linq 扩展方法。
var numbers = textBox1.Text.Split(' ').Select(int.Parse).ToArray();
var min = numbers.Min();
var max = numbers.Max();
更新
在您的表单中添加第二个文本框,并将此行添加到所有内容下方。
textbox2.Text = string.Format("min: {0} max: {1}", min, max);