不能使用Scanner类,构造函数未定义,方法未定义

当我想在我的项目eclipse中导入扫描器类时,向我展示一些错误:

Exception in thread "main" java.lang.Error: Unresolved compilation problems: The constructor Scanner(InputStream) is undefined The method nextLine() is undefined for the type Scanner 

这是我的代码:

 import java.util.Scanner; public class Scanner { public static void main(String[] args) { Scanner myScanner = new Scanner(System.in); System.out.println(myScanner.nextLine()); } } 

问题是你还要声明一个名为Scanner的类。 这意味着当你然后声明一个Scanner类型的变量并尝试调用构造函数时,编译器会认为你在谈论你的类。 只需将您自己的类更改为其他类(例如Test ):

 import java.util.Scanner; public class Test { public static void main(String[] args) { Scanner myScanner = new Scanner(System.in); System.out.println(myScanner.nextLine()); } } 

或者,当您的意思是java.util.Scanner时,您可以完全限定名称 – 但就可读性而言,这可能是个坏主意。

 // Please don't do this - but it would work. public class Scanner { public static void main(String[] args) { java.util.Scanner myScanner = new java.util.Scanner(System.in); System.out.println(myScanner.nextLine()); } } 

尝试

 java.util.Scanner myScanner = new java.util.Scanner(System.in); 

代替。 否则编译器会尝试实例化您的类,也称为Scanner 。 或者只是将您自己的Scanner类重命名为其他类。

尝试更改您的class级名称,例如:

 import java.util.Scanner; public class ScannerTest { public static void main(String[] args) { Scanner myScanner = new Scanner(System.in); System.out.println(myScanner.nextLine()); } } 

请更改class级名称:

 public class Scanner { 

到其他名字。 编译器无法将Scanner视为java.util.Scanner因为它将其视为您的类(它没有这样的构造函数或方法,因此它会给您错误通知它)。

您应该将类​​名称与Java的API类别不同。只需将类名称从Scanner更改为ScannerProgram

 import java.util.Scanner; public class ScannerProgram { public static void main(String[] args) { Scanner myScanner = new Scanner(System.in); System.out.println(myScanner.nextLine()); } }