2011-12-11 72 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