C# 如何将带有int数组的double转换为ToString覆盖?
C# 如何将带有int数组的double转换为ToString覆盖?,c#,arrays,struct,overriding,tostring,C#,Arrays,Struct,Overriding,Tostring,struct-SSales { 私人整数【】年; 私人双[]_销售; 私人随机销售; 公共SSales(国际[]年,双[]销售年) { //yearr=可枚举的.Range(2000,10).ToArray(); _年=yearr; _sales=salesarr; 双倍最大值=50000.00; 双最小值=1000.00; salesran=newrandom(); 对于(int i=0;i
struct-SSales
{
私人整数【】年;
私人双[]_销售;
私人随机销售;
公共SSales(国际[]年,双[]销售年)
{
//yearr=可枚举的.Range(2000,10).ToArray();
_年=yearr;
_sales=salesarr;
双倍最大值=50000.00;
双最小值=1000.00;
salesran=newrandom();
对于(int i=0;i
嗨!我是一名新的C#学生,在使用结构时有点困难。当按下generatebutton时,它应该调用struct SSales,每年生成10个随机销售数字,并使用ToString覆盖将其输入列表框,如上图所示
编辑tostring覆盖的格式应如下所示:
整数[]年+“空白”+“$”+双[]销售额
我必须使用int[]和double[]
我知道我应该使用string.Join,但我不知道如何将两个不同类型的数组组合成一个字符串数组。生成数组很好,我已经测试过了,我只需要知道如何使用ToString覆盖。任何帮助都将不胜感激
编辑2我还应该注意,我还使用冒泡排序来组织这些后续生成,这可能会使一些答案复杂化
private void Sortbutton_Click(object sender, EventArgs e)
{
if (yearradio.Checked)
{
int temp = 0;
for (int i = 0; i < yeararr.Length; i++)
{
for (int j = 0; j < yeararr.Length; j++)
{
if (yeararr[i] < yeararr[j])
{
temp = yeararr[i];
yeararr[i] = yeararr[j];
yeararr[j] = temp;
}
}
}
}
if (salesradio.Checked)
{
double temp2 = 0.0;
for (int i = 0; i < salesarr.Length; i++)
{
for (int j = 0; j < salesarr.Length; j++)
{
if (salesarr[i] > salesarr[j])
{
temp2 = salesarr[i];
salesarr[i] = salesarr[j];
salesarr[j] = temp2;
}
}
}
}
// for (int i = 0; i < yeararr.Length; i++)
// {
// for (int j = 0; j < salesarr.Length; j++)
// {
// listBox1.Items.Add();
// }
// }
}
private void排序按钮\u单击(对象发送者,事件参数e)
{
如果(年无线电检查)
{
内部温度=0;
对于(int i=0;isalesarr[j])
{
temp2=销售阵列[i];
salesarr[i]=salesarr[j];
salesarr[j]=temp2;
}
}
}
}
//对于(int i=0;i
结构中不应包含数组。结构应包含一年的信息:
struct SSales
{
public int Year { get; private set; }
public double Sales { get; private set; } // This should REALLY be decimal type
public SSales(int year, double sales) : this()
{
Year = year;
Sales = sales;
}
public override string ToString()
{
return string.Format("{0} ${1:F2}", Year, Sales);
}
}
然后,您可以在应用程序中拥有单个销售阵列:
Random salesran = new Random();
SSales[] sales = new SSales[10];
for (int i = 2000;i < 2010;++i)
sales[i] = new SSales(i, /* random number like you have */);
Random salesran=new Random();
SSales[]销售额=新SSales[10];
对于(int i=2000;i<2010;++i)
sales[i]=新的SSales(i,/*随机数,如您的*/);
现在,当您将sales array对象添加到listbox时,它们将根据结构的ToString()覆盖列出。结构中不应包含该数组。该结构应保存一年的信息:
struct SSales
{
public int Year { get; private set; }
public double Sales { get; private set; } // This should REALLY be decimal type
public SSales(int year, double sales) : this()
{
Year = year;
Sales = sales;
}
public override string ToString()
{
return string.Format("{0} ${1:F2}", Year, Sales);
}
}
然后,您可以在应用程序中拥有单个销售阵列:
Random salesran = new Random();
SSales[] sales = new SSales[10];
for (int i = 2000;i < 2010;++i)
sales[i] = new SSales(i, /* random number like you have */);
Random salesran=new Random();
SSales[]销售额=新SSales[10];
对于(int i=2000;i<2010;++i)
sales[i]=新的SSales(i,/*随机数,如您的*/);
现在,当您将sales数组对象添加到列表框中时,它们将根据结构的ToString()覆盖列出。字符串中应该是什么?您要加入什么?另外,请注意,
decimal
应该用于货币,而不是double
。不,必须是int[]和double[]。没有“如果”或“但是”。我猜你看不到atm的图像吗?@user7115764 Decimal应该始终用于货币,请参见@user7115764屏幕截图显示了与1次销售相关的1年。你提到你每年产生10次销售。最终输出是否应该是生成的10个值的总和?使用适当的控件,这需要一个ListViewh View=Details。字符串中应该是什么?您要加入什么?另外,请注意decimal
应该用于货币,而不是double
。不,必须是int[]和double[]。没有“如果”或“但是”。我猜你看不到atm的图像吗?@user7115764 Decimal应该始终用于货币,请参见@user7115764屏幕截图显示了与1次销售相关的1年。你提到你每年产生10次销售。最终输出是否应该是生成的10个值的总和?使用适当的控件,这需要一个ListViewh View=Details.OP可能要求每1年进行10次销售,但仍在等待clarification@maccettura如果是这样的话,那么他们随机产生的销售额将与列出的总数不匹配。如果最大值为50000,您预计一年中至少有一个销售额总数将超过每年10个。此外最小值是1000美元,但年销售总额不到5000美元,因此这也排除了每年10个数字的理论。我只按OPs post当按下generatebutton时,它应该调用struct SSales,每年生成10个随机销售数字,并使用ToString将其输入列表框覆盖如上图所示。
很抱歉,这只是每年一次销售。我通过使用salesarr=new double[1]而不是[10]解决了这个问题,这听起来简单多了,但之后我仍然需要使用气泡排序按年份或销售降序进行组织