2017-03-09 81 views
0

enter image description here如何将具有int数组的double转换为ToString重写?

struct SSales 
{ 
    private int[] _years; 
    private double[] _sales; 
    private Random salesran; 

    public SSales (int [] yeararr, double[] salesarr) 
    { 
     //yeararr = Enumerable.Range(2000, 10).ToArray(); 
     _years = yeararr; 
     _sales = salesarr; 
     double max = 50000.00; 
     double min = 1000.00; 
     salesran = new Random(); 
     for (int i = 0; i < yeararr.Length; i++) 
     { 
      for (int j = 0; j < salesarr.Length; j++) 
      { 
       salesarr[j] = Math.Round((salesran.NextDouble() * (max - min) + min), 2);       
      } 
     } 
    } 

    public override string ToString() 
    { 
     string itemstring; //string.join? 
     return itemstring; 
    } 

嗨!我是一名新的C#学生,我在使用结构时遇到了一些困难。当按下generatebutton时,应该调用结构SSales并为每年生成10个随机销售数字,并使用ToString覆盖将其输入到列表框中,如上图所示。

编辑的toString覆盖应格式化像:

INT []年+ “空的空间” + “$” +双[]的销售。

我必须使用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(); 
     // } 
     // } 
    } 
+2

什么应该是在字符串中,究竟是什么?你在加入什么?另外,请注意'decimal'应该用于货币,而不是'double'。 –

+0

nope,必须是int []和double []。没有ifs或buts。我猜你看不到图像atm? – user7115764

+2

@ user7115764十进制应该总是**用于金钱,请参阅[这里](http://stackoverflow.com/questions/1165761/decimal-vs-double-which-one-应该 - 使用和 - 时) – maccettura

回答

2

你不应该在结构中有数组。该结构应该持有一年的信息:

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 */); 

现在,当你把你的销售对象数组到您的列表框,他们”将根据你的结构的ToString()覆盖来列出。

+0

OP可能要求每1年有10个销售额,仍在等待澄清 – maccettura

+0

@maccettura如果是这种情况,那么他们的随机销售代不会与所列总数匹配。最多50000,如果每年有10个,您预计一年的销售总额中至少有一个会超过这个数字。此外,最小值为1000,但每年的销售总额不到5000美元,所以这也排除了每年10个数字的理论。 – itsme86

+0

我只是通过OPs发布'按下generatebutton时,它应该调用结构SSales并为每年生成10个随机销售数字,并使用ToString覆盖将它们输入到列表框中,如上图所示。 – maccettura