2012-01-26 146 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是十进制数字 –

相关问题