开发者

Luse Constructor With Variable Inside

开发者 https://www.devze.com 2023-02-05 09:33 出处:网络
I\'m learning about constructors. When I try to compile the following code, I get the error \"variable input and shape are not initialized.\"

I'm learning about constructors.

When I try to compile the following code, I get the error "variable input and shape are not initialized."

Could anyone tell me why and how to solve it?

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
        }
    }
}


You haven't given shape or input values yet before you try using them. Either you can give them dummy values for now, like

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

Or get the string and integer from the user; in that case, you might want to take a look at how to use a Scanner.

By leaving input and shape without values, at:

String input;
int shape;

they are uninitialized, so Java doesn't know what their values really are.


I assume this is some kind of homework. I took the liberty of reformating and fixing your code a little.

You have to initialize any variable you are going to use. The only exception is when you are using class members (those are initialized automatically to some default value). See below that the members of the Count class aren't explicitly initialized.

This is some working code. Also note that i change the solve method a little (the if blocks should have had () around the expression. But what you are trying to do is usually better done with a switch block as shown below. Also I declared two members inside the Count class to remember the values provided at construction time in order to be able to use them when calling the solve() method.

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;
        }
    }
}

Proper formatting of the code usually helps :).

0

精彩评论

暂无评论...
验证码 换一张
取 消