Java语言|错误: - 无法从静态上下文引用非静态变量扫描

时间:2016-07-21 06:43:17

标签: java

def index
  render template: 'posts/show'
end

问题: - 在方法()之外创建Scanner类对象时出现编译错误: - 无法从静态上下文引用非静态变量扫描但是当我在方法()中定义它时它没有错误工作为什么?

问题: - 如何创建Scanner类Object,每个类都可以使用在程序中某个位置定义的单个对象。这可能吗?

3 个答案:

答案 0 :(得分:0)

对于第一个问题,您尝试从静态方法访问非静态变量。可以在没有类实例的情况下调用静态方法。但是,每个类的实例都会创建非静态变量。

对于第二个问题,您可以将扫描仪设置为静态,如果您希望从多个类中使用它,则将其公开。

class Customer
{
    static Scanner scan = new Scanner(System.in);

    public static void method()
    {             
        System.out.print("Name : "); 
        String name = scan.nextLine();
    }
}

答案 1 :(得分:0)

如果您想从静态方法访问Scanner,则必须定义Scanner本身static。如果您希望每个人都可以访问Customer类上的Scanner,请将其定义为public static

您可能需要阅读OOP principlesstatic keyword in Java

答案 2 :(得分:0)

请查看以下可能的2种解决方案

解决方案1 ​​

   Scanner scan = new Scanner(System.in);

   public void method()
   {             
       System.out.print("Name : "); 
       String name = scan.nextLine();
   }

解决方案2

   static Scanner scan = new Scanner(System.in);

   public static void method()
   {             
       System.out.print("Name : "); 
       String name = scan.nextLine();
   }