我可以在java中的静态方法中使用非静态变量吗?

时间:2017-04-06 10:42:29

标签: java

  

"在java中编写一个程序,它声明一个具有一个整数数据成员的类和两个用于()和out()的成员函数来输入和输出数据成员中的数据。"

我目前的代码如下。

import java.util.Scanner; 
public class Operator 
{ 
    static int a;
    public static void input() { 
        Scanner in=new Scanner(System.in); 
        System.out.println("Enter the number:"); 
        a=in.Nextint(); //Here is problem 
    }

    public static void output() { 
        System.out.println("Number is:" + a); 
    }

    public static void main(String[] args) 
    {
        input();
        output();
    } 
}

1 个答案:

答案 0 :(得分:1)

你似乎对w.r.t实例变量和局部变量感到困惑。

你总是可以声明一个"局部变量"在静态方法中。 例如main()是一个静态函数,我们总是在其中声明变量。

所以你创建了一个变量" in"在input()函数中的扫描仪类型非常好。

然而,你"不能"从静态方法访问实例变量和实例方法。

这篇关于堆栈溢出的帖子提供了完整而完整的答案:Can non-static methods modify static variables

就您的代码而言,代码中存在轻微错误。 读取整数的函数调用是" nextInt"而不是" Nextint"。 Java通常使用camel-case来定义其所有方法。所以要小心使用方法。

修改后的代码应为:

class Operator
{
    static int a;
    public static void input() { 
        Scanner in=new Scanner(System.in); 
        System.out.println("Enter the number:"); 
        a=in.nextInt(); //this is nextInt and NOT Nextint
    }

    public static void output() { 
        System.out.println("Number is:" + a); 
    }

    public static void main (String[] args) throws java.lang.Exception
    {
        // your code goes here
        input();
        output();

    }
}
相关问题