不能使用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()); } }