c#编译出错:错误1使用未分配的局部变量

时间:2011-12-11 13:00:03

标签: c#

我遇到两个错误,我看到它们在哪里,我只是不知道如何更改代码以满足我的需求。

以下是代码:

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:\ Users \ Tutis \ Documents \ Visual Studio 2008 \ Projects \ zaidimas \ zaidimas \ Form1.cs 38 26 zaidimas

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

有关如何更改代码的任何建议吗?

9 个答案:

答案 0 :(得分:2)

您已经声明了名称为z1z2的变量,您无法再次声明它们

我认为您想要使用相同的变量但是您意外地将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)

答案 1 :(得分:1)

您正在重新声明变量。

更改:

int z1 = z1 + kauliukas;

要:

z1 = z1 + kauliukas;

并改变:

int z2 = z2 + kauliukas;

要:

z2 = z2 + kauliukas;

答案 2 :(得分:1)

你可以像这样直接使用

z1 = z1 + kauliukas;

 z2 = z2 + kauliukas; 

答案 3 :(得分: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上的这篇文章。

答案 4 :(得分:0)

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

做一个作业 - 就像这样:

int z1 = kauliukas;

int z2 = kauliukas;

或者以不同方式命名您的本地变量:

int z1l = z1 + kauliukas;

int z2l = z2 + kauliukas;

BTW:你的代码有点奇怪 - 你为什么要命名与字段相同的局部变量(z1z2kauliukasnuoroda)?

编辑 - 评论后:

离开int

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

答案 5 :(得分:0)

var z1 = this.z1 + kauliukas;

var z2 = this.z2 + kauliukas;

您需要告诉编译器什么是实例字段以及什么是局部变量。

答案 6 :(得分:0)

您尚未在该范围内分配任何值..

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

答案 7 :(得分:0)

嗯,你已经有了如何使它发挥作用,但对我来说,你真正的问题是

public int z1;

您不应该公开这样的成员变量。

public int z1 {get;set;}

会更好,但考虑到你正在做的事情,我会选择旧风格。

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

然后

int z1 = _z1 + kauliukas;

本来可以帮助你不要提及必须阅读你的代码的下一个可怜的笨蛋;

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

答案 8 :(得分:0)

您在方法中初始化变量。您已经在类中声明了字段kauliukas, z1 ,z2并编写了int kauliukas = ...来创建具有相同名称的局部变量。因此,在您的buutton1和button2点击事件处理程序中,使用kauliukas = RandomNumber(1, 6);z1 = z1 + kauliukas; 而不使用int