内部变量的Luse构造函数

时间:2011-01-20 01:17:35

标签: java

我正在学习施工人员 当我尝试编译以下代码时,我得到错误“变量输入和形状未初始化。”

有谁可以告诉我为什么以及如何解决它?

public class Try {

    public static void main(String[] args)
    {
        String input;//user key in the height and width
        int shape;//triangle or square

        Count gen = new Count(input , shape);//is this the right way to code?
        gen.solve();
    }
}

public class Count {

    public Count(String inp, int shp) {

        String input_value = inp;
        shape_type = shp;
    }

    public void solve () {

        if shape_type==3{
            //count the triangle
        }
        else if shape_type==4{
            //count the square
        }
    }
}

2 个答案:

答案 0 :(得分:1)

在尝试使用之前,您尚未提供shapeinput值。要么你现在可以给它们虚拟值,比如

String input = "test";
int shape = 3;

或者从用户那里获取字符串和整数;在这种情况下,您可能需要了解如何使用Scanner

保留没有值的输入和形状,位于:

String input;
int shape;

他们未初始化,因此Java不知道他们的价值究竟是什么。

答案 1 :(得分:1)

我认为这是某种功课。我冒昧地重新格式化并修改了一些代码。

您必须初始化要使用的任何变量。唯一的例外是当您使用类成员时(这些成员会自动初始化为某个默认值)。请参阅下文,Count类的成员未明确初始化。

这是一些有效的代码。另请注意,我稍微更改了一下求解方法(if块应该在表达式周围有()。但是你要做的事情通常是使用switch块做得更好如下所示。我还在Count类中声明了两个成员,以便记住构造时提供的值,以便在调用solve()方法时能够使用它们。

public class Try {

     public static void main(String[] args) {
        String input = null; //user key in the height and width
        int shape = 0; //triangle or square

        Count gen = new Count(input, shape);//is this the right way to code?
        gen.solve();
    }

}

class Count {

    String input_value;
    int shape_type;

    public Count(String inp, int shp) {
        this.input_value = inp;
        this.shape_type = shp;
    }

    public void solve() {
        switch (this.shape_type) {
            case 3:
                // count the triangle
                break;
            case 4:
                // count the square
                break;
        }
    }
}

正确格式化代码通常有助于:)。