2011-09-24 32 views
1

我需要创建一个简单的c#应用程序来添加一些季度数字。我使用数组来“存储”数据,然后将其放置在文本框中。我的“计算”怎么会不起作用?

无论如何,我的计算部分有一些问题。我在它周围添加了评论标签,以便您可以轻松找到它。该地区的作品,但它需要两次点击,并将其添加到上面的行。我一直在看相同的几行约一个小时,似乎无法弄清楚这一点。那里有任何想法?

//Global 
    int lastIndexUsed = -1; 
    int[,] quarters = new int[10, 5]; 
    string[] Branch = new string[10]; 

    public FrmSales() 
    { 
     InitializeComponent(); 
    } 

    private void txtBranch_TextChanged(object sender, EventArgs e) 
    { 

    } 

    private void btnCalc_Click(object sender, EventArgs e) 
    { 
     int Q1; 
     int Q2; 
     int Q3; 
     int Q4; 


     Q1 = int.Parse(txtQ1.Text); 
     Q2 = int.Parse(txtQ2.Text); 
     Q3 = int.Parse(txtQ3.Text); 
     Q4 = int.Parse(txtQ4.Text); 

     lastIndexUsed = lastIndexUsed + 1; 
     quarters[lastIndexUsed, 0] = Q1; 
     quarters[lastIndexUsed, 1] = Q2; 
     quarters[lastIndexUsed, 2] = Q3; 
     quarters[lastIndexUsed, 3] = Q4; 
     Branch[lastIndexUsed] = txtBranch.Text; 








     //Display Results 

     int ctr; 
     int ctr2; 
     string outLine; 
     string tempName; 

     int row; 
     int col; 
     int accum; 


     txtInfo.Text = ""; 

     outLine =   " Branch  Q1   Q2   Q3   Q4  Total " + "\r\n"; 
     outLine = outLine + "========== ========== ========== ========== ========== ==========" + "\r\n"; 

     txtInfo.Text = outLine; 


     for (ctr = 0; ctr <= lastIndexUsed; ctr++) 
     { 

      outLine = ""; 

      tempName = Branch[ctr].PadLeft(10); 
      outLine = outLine + tempName + " "; 

      for (ctr2 = 0; ctr2 <= 4; ctr2 = ctr2 + 1) 

      { 


       outLine = outLine + quarters[ctr, ctr2].ToString().PadLeft(10) + " "; 

      } 

      txtInfo.Text = txtInfo.Text + outLine + "\r\n"; 


     } 

     //Calculate ########################################################### 

     for (row = 0; row <= lastIndexUsed; row++) 
     { 

      accum = 0; 


      for (col = 0; col <= 3; col++) 
      { 

       accum = accum + quarters[row, col]; 

      } 
      quarters[row, 4] = accum; 
     } 




     //End Calculate ######################################################### 

    } 

    private void btnClear_Click(object sender, EventArgs e) 
    { 
     txtBranch.Text = ""; 
     txtQ1.Text = ""; 
     txtQ2.Text = ""; 
     txtQ3.Text = ""; 
     txtQ4.Text = ""; 
     txtInfo.Text = ""; 

    } 

    private void btnExit_Click(object sender, EventArgs e) 
    { 
     Close(); 
    } 
+1

为了必要的多少代码的是证明问题? –

+0

我只是想完整的代码,所以可以分析,人们可以得到一个完整的理解。 (也许错误是在不同的位置?) – Brandon

+2

我会很容易与该空白。 – Blender

回答

5

问题很简单:在实际计算它的值之前使用quarters数组。将“calculate”循环移到第一个循环的上方。

另外(除其他外):

  • 太多空行和空白;使其难以阅读
  • 不要尝试使用文本进行格式化报告;如果您单击按钮足够的时间只使用一个DataGridView或类似
  • ,你将有一个数组索引越界异常,因为lastIndexUsed会高于10
+0

我同意,一些细节有点粗略,但我按照要求做。最后,我必须添加验证,以便在输入10以上时不会出错。使用文本框制作格式化报告的想法非常奇怪并且很难实现。感谢您的帮助,解决了问题! – Brandon