我想用 c# 构建一个序列随机化器移动应用程序。我想从两个不同的文本框中检索间隔中的最小和最大数字,然后单击"生成"按钮以在新文本框中显示所有数字的随机序列。
我的代码只显示一个数字。怎么了?
谢谢。
public sealed partial class MainPage : Page
{
public MainPage()
{
this.InitializeComponent();
}
private void button_Click(object sender, RoutedEventArgs e)
{
int seed = 345;
var result = "";
int min = Convert.ToInt32(textBox.Text);
int max = Convert.ToInt32(textBox2.Text);
Random r3 = new Random(seed);
for (int i = min; i < max; i++)
{
ecran.Text = (/*"," + r3.Next(min, max)*/i).ToString();
}
}
要澄清您的解决方案出了什么问题:
在循环中,您不断重新分配ecran的值。发短信。
即
1st loop cycle > ecran.Text = ", " + 77
2nd loop cycle > ecran.Text = ", " + 89
//Value of ecran.Text after 1st cycle is ", 77"
//Value of ecran.Text after 2nd cycle is ", 89"
覆盖 ecran 的价值。每次迭代的文本。
通过在等号前面添加加号来修复ecran.Text += ", " + LOGIC
发生这种情况是因为您将序列值分配给循环中的ecran.Text
。相反,您应该创建序列的字符串表示形式,并在末尾分配它。
使用Shuffle<T>
问答中的方法:
int min = Convert.ToInt32(textBox.Text);
int max = Convert.ToInt32(textBox2.Text);
if (max < min) return;
var sequence = Enumerable.Range(min, max-min+1).ToList();
Shuffle(sequence);
ecran.Text = string.Join(",", sequence);