如何在java中使用扫描仪?

时间:2014-04-12 06:30:16

标签: java

import java.util.Scanner;  

public class Initials {  
    Scanner getin = new Scanner (System.in);  
    public static void main(String[] args) {  
        String Name;  
        System.out.println("Enter your name's Initials::");  
        Name=getin.nexlinet();  
    }  
}

错误:无法从静态上下文引用非静态变量?

7 个答案:

答案 0 :(得分:3)

首先,Scanner个对象没有使用名为nexlinet的方法,我想你想要nextLine()

关于错误,您无法从non-static方法引用static变量(在这种情况下,该方法为main)。

为什么?因为即使没有创建类的实例,也可以使用static变量。

如何解决?

  • 您可以将变量getin声明为static

    static Scanner getin = new Scanner(System.in);
    
  • 或者您可以创建类的实例并访问实例字段getin

    Initials some_name = new Initials();
    // ...
    name = t.getin.nextLine();
    

备注:

  • 尝试遵循Java命名约定。对方法/变量使用'mixedCase',对类/接口使用'CamelCase'
  • 我建议您阅读有关访问修饰符的内容。为什么?看看第二种解决方法。类Initials应为实例字段getin提供 getter / setter 方法,因此您无法对其进行完全访问。此外,将实例字段声明为private(并使用 getters / setters )是一种很好的做法。

答案 1 :(得分:1)

试试这个:

// ur code
    public static void main(String[] args) { 
        Scanner getin = new Scanner (System.in); // <-- move scanner declaration inside main
        Name=getin.nextLine();  // <-- note this change also
// ur code

答案 2 :(得分:0)

你必须在main方法中创建扫描器类对象。

因为外部声明的非静态变量无法访问静态方法。

public static void main(String[] args) 
{  
    Scanner getin = new Scanner (System.in);  
    String Name;  
    System.out.println("Enter your name's Initials::");  
    Name=getin.nextLine();  
}  

答案 3 :(得分:0)

您不了解静态和非静态变量或方法。

1)无论是静态还是非静态方法,都可以访问静态变量或方法。 2)静态方法无法访问非静态方法或变量。

所以修改后的代码应该是:

import java.util.Scanner;  

public class Initials {  

    public static void main(String[] args) {  
        String Name;
         Scanner getin = new Scanner (System.in);    
        System.out.println("Enter your name's Initials::");  
        Name=getin.nexLine();  
    }  
}

否则将扫描仪修改为static Scanner getin = new Scanner (System.in);

答案 4 :(得分:0)

静态方法:     无法访问非静态变量。     无法调用非静态方法。     不能使用&#34;这个&#34;关键词。     不能使用&#34; super&#34;关键词。     无法覆盖静态方法。 所以你不能访问main方法中的非静态对象,因为它是一个静态方法。

答案 5 :(得分:0)

import java.util.Scanner;  

public class Initials 
{  
    public static void main(String[] args) 
   {  
        Scanner getin = new Scanner (System.in);  

        String Name;  
        System.out.println("Enter your name's Initials::");  
        Name=getin.nexlinet();  
    }  
}

答案 6 :(得分:0)

import java.util.Scanner;

public class Initials {

public static void main(String[] args) { 
     Scanner getin = new Scanner (System.in);  
    String Name;  
    System.out.println("Enter your name's Initials::");  
    Name=getin.next();  
}  

}