-5

如何访问变量“ user_input”和实例“ c1”?据我了解,它们在if-else声明 @ 选择 1 的范围之外是不可访问的。

请参阅以下内容:

 public static void main (String [] args)
{
    int choice;
    int user_input;

    Scanner in = new Scanner (System.in);

    do
    {
        System.out.println ("==== Circle Computation =========");
        System.out.println ("| 1. Create a new circle\t|");
        System.out.println ("| 2. Print area\t\t\t|");
        System.out.println ("| 3. Print circumference\t|");
        System.out.println ("| 4. Quit\t\t\t|");

        System.out.println ("Choose option (1 - 3): ");
        choice = in.nextInt();

        if (choice == 1)
        {
            System.out.println ("Enter the radius to compute the area & circumference:");
            user_input = in.nextInt();              

            Circle c1 = new Circle(user_input);     //refer to prob @ choice '2'
            System.out.println ("A new circle is created.\n");
        }

        if (choice == 2)
        {           
            //Prob - instance 'c1' & var 'user_input' @ choice '1' not visible in other if-else statements?
            //http://stackoverflow.com/questions/11685023/creating-an-instance-of-an-object-within-an-if-in-c-sharp
            System.out.println ("Area of circle:");
            System.out.println ("Radius: " + c1.getRadius());
            System.out.println ("Area: " + c1.area());
        }                   
4

4 回答 4

2

Circle c1if语句中定义,因此只能在那里访问。

user_input在while循环之外定义,因此可以在整个循环中访问

每个变量都有它的定义范围。当 c 中的变量在块中定义时(意味着 a{和 a之间}),它被限制在该范围内,这意味着它只能在该范围内被引用。

于 2013-08-25T08:37:32.220 回答
1

user_input如果条件导致它们的范围是main方法,则该变量都可以访问

在声明中

if (choice == 1)
{
    System.out.println ("Enter the radius to compute the area & circumference:");
    user_input = in.nextInt();              

    Circle c1 = new Circle(user_input);     //refer to prob @ choice '2'
    System.out.println ("A new circle is created.\n");
}

的范围c1是包围 if 条件的大括号。如果您希望它可以在另一个 if 循环中访问,那么您可能希望c1像下面这样移出。c1我已经更改了to方法的范围,以main使其符合您的逻辑。

    Circle c1 = null;
    do
    {
        System.out.println ("==== Circle Computation =========");
        System.out.println ("| 1. Create a new circle\t|");
        System.out.println ("| 2. Print area\t\t\t|");
        System.out.println ("| 3. Print circumference\t|");
        System.out.println ("| 4. Quit\t\t\t|");

        System.out.println ("Choose option (1 - 3): ");
        choice = in.nextInt();
        if (choice == 1)
        {
            System.out.println ("Enter the radius to compute the area & circumference:");
            user_input = in.nextInt();              

            c1 = new Circle(user_input);     //refer to prob @ choice '2'
            System.out.println ("A new circle is created.\n");
        }

        if (choice == 2)
        {           
            //Prob - instance 'c1' & var 'user_input' @ choice '1' not visible in other if-else statements?
            //http://stackoverflow.com/questions/11685023/creating-an-instance-of-an-object-within-an-if-in-c-sharp
            System.out.println ("Area of circle:");
            System.out.println ("Radius: " + c1.getRadius());
            System.out.println ("Area: " + c1.area());
        }           
    }
于 2013-08-25T08:38:00.993 回答
0

user_input变量在 main 方法块中创建
,因此可以在 if 或 else 块中访问它。但C1 无法访问,因为它是 IF 块中的局部变量/实例

于 2013-08-25T08:38:21.000 回答
-2

User_input 可以在整个方法中使用。

C1 不能用于第二个 if 部分

于 2013-08-25T08:34:01.913 回答