2012-01-26 91 views
-3
using System; 
    using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
    using System.Windows.Forms; 

    namespace Adaline 
    { 
    public partial class Form1 : Form 
    { 
    float d1, d2, d3, d4, eta; 
    float y1, y2, y3, y4; 
    float w10, w11, w12; 
    float w20, w21, w22; 
    float w30, w31, w32; 
    float w40, w41, w42; 
    float x10, x11, x12; 
    float x20, x21, x22; 
    float x30, x31, x32; 
    float x40, x41, x42; 

    float net, net1, net2, net3, net4; 

    float dw10, dw11, dw12; 
    float dw20, dw21, dw22; 
    float dw30, dw31, dw32; 
    float dw40, dw41, dw42; 

     public Form1() 
    { 
     InitializeComponent(); 
    } 
     public void Adaline(float x0, float x1, float x2, 
          float w0, float w1, float w2, 
          float d, float net, float y, 
          float dw0, float dw1, float dw2, float eta) 
     { 
      net = x0 * w0 + x1 * w1 + x2 * w2; 

      if (net <= 0) 
       y = 1; 
      else 
       y = -1; 

      dw0 = eta * x0 * (d - net); 
      dw1 = eta * x1 * (d - net); 
      dw2 = eta * x2 * (d - net); 

      string a = "{0} {1} {2} {3} {4} {5} {6} {7} {8} {9}  {10} {11}", x0, x1, x2, w0, w1, w2, d, net, y, dw0, dw1, dw2; 
      listBox1.Items.Add(a); 
     } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     eta = Convert.ToSingle(textBox20); 

     d1 = Convert.ToSingle(textBox19); 
     d2 = Convert.ToSingle(textBox18); 
     d3 = Convert.ToSingle(textBox17); 
     d4 = Convert.ToSingle(textBox16); 

     w10 = Convert.ToSingle(textBox3); 
     w11 = Convert.ToSingle(textBox2); 
     w12 = Convert.ToSingle(textBox1); 
     int passes = 0; 

     x10 = Convert.ToSingle(textBox7); 
     x11 = Convert.ToSingle(textBox11); 
     x12 = Convert.ToSingle(textBox15); 
     x20 = Convert.ToSingle(textBox6); 
     x21 = Convert.ToSingle(textBox10); 
     x22 = Convert.ToSingle(textBox14); 
     x30 = Convert.ToSingle(textBox5); 
     x31 = Convert.ToSingle(textBox9); 
     x32 = Convert.ToSingle(textBox13); 
     x40 = Convert.ToSingle(textBox4); 
     x41 = Convert.ToSingle(textBox8); 
     x42 = Convert.ToSingle(textBox12); 

     while (passes <= 100) 
     { 
      Adaline(x10, x11, x12, w10, w11, w12, d1, net1, y1, dw10, dw11, dw12, eta); 

      w20 = w10 + dw10; 
      w21 = w11 + dw11; 
      w22 = w12 + dw12; 

      Adaline(x20, x21, x22, w20, w21, w22, d2, net2, y2, dw20, dw21, dw22, eta); 

      w30 = w20 + dw20; 
      w31 = w21 + dw21; 
      w32 = w22 + dw22; 

      Adaline(x30, x31, x32, w30, w31, w32, d3, net3, y3, dw30, dw31, dw32, eta); 

      w40 = w30 + dw30; 
      w41 = w31 + dw31; 
      w42 = w32 + dw32; 

      Adaline(x40, x41, x42, w40, w41, w42, d4, net4, y4, dw40, dw41, dw42, eta); 

      w10 = w40 + dw40; 
      w11 = w41 + dw41; 
      w12 = w42 + dw42; 

      passes += 1; 
     } 
    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 

    } 

} 

}有人可以幫我解決我得到的錯誤嗎?

我得到thiese錯誤: 1不能使用局部變量 '網' 聲明之前。局部變量的聲明隱藏字段'Adaline.Form1.net' 2在聲明ot os之前,不能使用局部變量'x0'。 3聲明ot os之前,不能使用局部變量'w0'。 4在聲明ot os之前,不能使用局部變量'x1'。 。 。 。

+2

這是功課嗎?請爲此使用相應的標籤。 –

+3

錯誤非常明顯,只是......你知道,閱讀它們並花一分鐘思考。去查閱文檔。 –

+0

也許如果錯誤說「你不能使用變量Net,因爲你根本沒有聲明它。」 –

回答

0

第二個錯誤是其他錯誤的原因。

您已經聲明瞭一個方法參數,其名稱與方法字段的名稱相同。這隱藏了方法內的字段。

該錯誤導致參數無法正確聲明,並且每次使用方法中的某個參數時都會發生另一個錯誤。

0

錯誤可能源於您的Adaline()方法具有與您的成員名稱相同的參數(例如net)。更改他們的名字或使用前綴this引用您的成員,而不是參數。

4

無法格式化像這樣的字符串:

string a = "{0} {1} {2} {3} {4} {5} {6} {7} {8} {9}  {10} {11}", x0, x1, x2, w0, w1, w2, d, net, y, dw0, dw1, dw2; 

相反,你必須使用一個格式化方法,如:

string a = String.Format("{0} {1} {2} {3} {4} {5} {6} {7} {8} {9}  {10} {11}", x0, x1, x2, w0, w1, w2, d, net, y, dw0, dw1, dw2); 

編譯器認爲你正在重新定義X0,X1,X2 ,w0等...

+0

但爲什麼不將它們打印爲浮點值? – user1151963

+0

嘗試{0:f2}其中2是十進制數字 –

相關問題