2011-12-11 54 views
0

我收到两个错误,我看到它们在哪里,我只是不知道如何更改代码以适合我的需要。c#编译错误:错误t 1使用未分配的本地变量

下面的代码:

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 zaidimas 
{ 
    public partial class Form1 : Form 
    { 

     public int z1 = 1; 
     public int z2 = 1; 
     public int kauliukas; 
     public string nuoroda; 

     public Form1() 
     { 
      InitializeComponent(); 
      button2.Visible = false; 
      button1.Visible = true; 
      webBrowser1.DocumentCompleted += webBrowser1_DocumentCompleted; 
      webBrowser1.Navigate("siauliaicity.99k.org/zaidimas/"); 
     } 

     private void button1_Click(object sender, EventArgs e) 
     { 

      // Gaunama kauliuko reikšmė 
       int kauliukas = RandomNumber(1, 6); 
       pictureBox1.ImageLocation = kauliukas + ".jpg"; 
       label2.Text = "Kauliukas ridenos ridinėjosi ir sustojo ties" + kauliukas + "taškais"; 


       int z1 = z1 + kauliukas; (first error goes here) 
       string nuoroda = "http://siauliaicity.99k.org/zaidimas/index.php?z=1&z1=" + z1 + "&z2=" + z2 + "&plus=" + kauliukas; 
       webBrowser1.Navigate(nuoroda); 
       button1.Visible = false; 
       button2.Visible = true; 
     } 

     private void button2_Click(object sender, EventArgs e) 
     { 
      // Gaunama kauliuko reikšmė 
      int kauliukas = RandomNumber(1, 6); 
      pictureBox1.ImageLocation = kauliukas + ".jpg"; 
      label2.Text = "Kauliukas ridenos ridinėjosi ir sustojo ties" + kauliukas + "taškais"; 

      int z2 = z2 + kauliukas; (second error goes here) 
      string nuoroda = "siauliaicity.99k.org/zaidimas/index.php?z=2&z1=" + z1 + "&z2=" + z2 + "&plus=" + kauliukas; 
      webBrowser1.Navigate(nuoroda); 
      button1.Text = "Ridenti kauliuką! (Ridena: Pirmasis žaidėjas)"; 

      button2.Visible = false; 
      button1.Visible = true; 
     } 

     // Kauliuko funkcija 
     private int RandomNumber(int min, int max) 
     { 
      Random random = new Random(); 
      return random.Next(min, max); 
     } 

     private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) 
     { 

     } 
    } 
} 

错误消息的:

错误1只使用未分配的局部变量 'Z1' 的C:\用户\ Tutis \文档\ Visual Studio 2008的\项目\ zaidimas \ zaidimas \ Form1.cs中38个26 zaidimas

错误2使用的未分配的局部变量'z2'C:\ Users \ Tutis \ Documents \ Visual Studio 2008 \ Projects \ zaidimas \ zaidimas \ Form1.cs 52 22 zaidimas

任何建议如何更改代码?

回答

2

您已经声明了名z1变量和z2你不能再次声明他们

我想你想使用相同的变量,但你不小心把int在开始

变化

int z1 = z1 + kauliukas; (first error goes here) 

z1 = z1 + kauliukas; (first error goes here) 

int z2 = z2 + kauliukas; (second error goes here) 

z2 = z2 + kauliukas; (second error goes here) 
+0

谢谢哈里斯!我犯这样一个愚蠢的错误...... Learnig。 – Tautvydas

0

什么是感觉behing int z1 = z1 + kauliukas;和/或int z2 = z2 + kauliukas;

只是做一个任务 - 即是这样的:

int z1 = kauliukas; 

int z2 = kauliukas; 

或不同命名的局部变量:

int z1l = z1 + kauliukas; 

int z2l = z2 + kauliukas; 

顺便说一句:你的代码有点奇怪 - 你为什么命名与字段相同的局部变量(z1,z2,kauliukas,,nuoroda)?

编辑 - 后评论:

刚刚离开的int出来:

z1 = z1 + kauliukas; 
z2 = z2 + kauliukas; 
+0

我需要总结一下这些数字...... – Tautvydas

+0

@Tautvydas我们没有理由让他们局部变量...看到我的编辑.. 。 – Yahia

0
var z1 = this.z1 + kauliukas; 

var z2 = this.z2 + kauliukas; 

你需要告诉编译器什么的实例字段,什么是局部变量。

0

您没有在指定范围内的任何值..

你犯了一个局部变量在button_click,并尝试将其设置为自身。你可以在z1之前删除int。

1

您正在重新声明变量。

变化:

int z1 = z1 + kauliukas; 

要:

z1 = z1 + kauliukas; 

而变化:

int z2 = z2 + kauliukas; 

要:

z2 = z2 + kauliukas; 
1

你可以直接使用这样

z1 = z1 + kauliukas; 

z2 = z2 + kauliukas; 
1

您要重新声明的公共变量在点击事件的局部变量,改变线路上你得到错误:

this.z1 += kauliukas 
this.z2 += kauliukas 

这将为您的公共变量赋值新值。

此外,另一项建议为你的随机数的代码 - 不重新创建你想生成一个随机数new Random(),更可靠,如果多线程使用static的使用每个线程相同的实例,变量例如

private Random random = new Random(); 

... 

private int RandomNumber(int min, int max) 
{ 
    return this.random.Next(min, max); 
} 

有关更多信息,请参阅此文章的Random Numbers

0

那么你已经有了如何使它的工作,但对我来说你真正的问题是

公众诠释Z1;

你不应该像这样公开成员变量。

public int z1 {get;set;} 

会更好,但考虑到你在做什么,我会去旧的风格。

private int _z1; 
public int z1 {get {return _z1;} set {_z1 = value;} 

然后

int z1 = _z1 + kauliukas; 

会帮助你出去不提下可怜的笨蛋谁有权阅读你的代码;

Juts因为你可以给一个局部变量同名的成员并不意味着你应该这样做。

0

你在方法中初始化变量。您已经在您的班级中声明了kauliukas, z1 ,z2字段,并且正在书写int kauliukas = ...您使用相同名称创建本地变量。因此,在您buutton1和BUTTON2单击事件处理程序使用kauliukas = RandomNumber(1, 6);z1 = z1 + kauliukas;没有int