我想在单击按钮后在textBox中显示我的排序数组。 我有两个类和一个接口。 First Class生成随机数并在textbox1中显示,第二类生成冒泡排序,我无法在texbox上显示排序数组。
头等舱:
public class RandomArray
{
static readonly Random generator = new Random();
/// <summary>
/// here are the random numbers stored
/// </summary>
int[] array;
/// <summary>
/// store the min, max used to generate the data
/// </summary>
readonly int min, max;
/// <summary>
/// Constructor only needs how the value limits
/// </summary>
/// <param name="min">The minimum value (typical 0)</param>
/// <param name="max">The maximum value (example 100)</param>
public RandomArray(int min, int max)
{
this.min=min;
this.max=max;
this.array=new int[0];
}
/// <summary>
/// Fills the array with random numbers
/// </summary>
/// <param name="count">The number of data to generate</param>
public void Fill(int count)
{
this.array=new int[count];
// fill array with random integers
for (int i=0; i<array.Length; i++)
{
array[i]=generator.Next(min, max);
}
}
/// <summary>
/// Copy constructor if needed (optional)
/// </summary>
/// <param name="other">A RandomArray to copy the data from</param>
public RandomArray(RandomArray other)
{
this.min=other.min;
this.max=other.max;
this.array=(int[])other.array.Clone();
}
/// <summary>
/// Provide the data
/// </summary>
public int[] Array { get { return array; } }
/// <summary>
/// Provide the limits used
/// </summary>
public int Min { get { return min; } }
public int Max { get { return max; } }
/// <summary>
/// Creates a comma separated list of numbers like <c>[45,32,64,..]</c>
/// </summary>
public string ToStringList()
{
string[] parts=new string[array.Length];
for (int i=0; i<parts.Length; i++)
{
parts[i]=array[i].ToString();
}
return "["+string.Join(",", parts)+"]";
}
/// <summary>
/// Shows only the limits used
/// </summary>
public override string ToString()
{
return string.Format("RandomArray({0},{1})", min, max);
}
<!-- language: none-->
这是泡泡排序
class BubbleSort : ISortAlgorithm<int>
{
public void Sort (int[] array)
{
int temp;
for (int j = 1; j <= array.Length - 2; j++)
{
for (int i = 0; i <= array.Length - 2; i++)
{
if (array[i] > array[i + 1])
{
temp = array[i + 1];
array[i + 1] = array[i];
array[i] = temp;
}
}
}
}
ISortAlgorithm:
interface ISortAlgorithm<T>
{
void Sort(T[] array);
}
最后一件事是对文本框的请求:
private void button2_Click(object sender, EventArgs e)
{
BubbleSort p = new BubbleSort();
textBox1.Text = p.ToString();
}
如果我点击按钮程序会显示MyProgram.BubbleSort
我是否会覆盖bubblesort方法?或者是什么 ?我几乎尝试了一切。 Thanskd和问候。
答案 0 :(得分:4)
我觉得你有点困惑。当然,您希望在对数组进行排序后创建RandomArray
对象并调用其ToString()
方法。
RandomArray r = new RandomArray(1, 100);
r.Fill(50);
BubbleSort b = new BubbleSort();
b.Sort(r.Array);
textBox1.Text = r.ToStringList(); //depending on the requirements
答案 1 :(得分:-1)
您需要覆盖ToString
类
BubbleSort
方法
还有一些事情,
1)您需要将数组保留在BubbleSort
类中,以便按照您的方式使用
class BubbleSort : ISortAlgorithm<int>
{
private int[] myArray;
public void Sort (int[] array)
{
myArray = array;
int temp;
for (int j = 1; j <= array.Length - 2; j++)
{
for (int i = 0; i <= array.Length - 2; i++)
{
if (array[i] > array[i + 1])
{
temp = array[i + 1];
array[i + 1] = array[i];
array[i] = temp;
}
}
}
}
public override string ToString()
{
StringBuilder sb = new StringBuilder();
foreach(int i in myArray)
{
sb.Append(Convert.ToString(i));
}
return sb.ToString();
}