当我想在我的项目中导入扫描器类时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());
}
}
答案 0 :(得分:9)
问题是你还声明一个名为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());
}
}
答案 1 :(得分:3)
尝试
java.util.Scanner myScanner = new java.util.Scanner(System.in);
代替。否则编译器会尝试实例化您的类,也称为Scanner
。或者只是将您自己的Scanner
课程重命名为其他内容。
答案 2 :(得分:1)
请更改班级名称:
public class Scanner {
以其他名字命名。编译器无法将扫描器视为java.util.Scanner
,因为它将其视为您的类(它没有这样的构造函数或方法,因此它会给您错误通知)。
答案 3 :(得分:1)
尝试更改您的班级名称,例如:
import java.util.Scanner;
public class ScannerTest {
public static void main(String[] args) {
Scanner myScanner = new Scanner(System.in);
System.out.println(myScanner.nextLine());
}
}
答案 4 :(得分:0)
您应该将类名称与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());
}
}