如何在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(); } } 

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

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

关于错误,您不能从static方法引用non-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 (并使用getter / setter )是一种很好的做法。

尝试这个:

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

你必须在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(); } 

静态方法:无法访问非静态变量。 无法调用非静态方法。 不能使用“this”关键字。 不能使用“超级”关键字。 无法覆盖静态方法。 所以你不能访问main方法内部的非静态对象,因为它是一个静态方法。

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

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

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

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

}