不要将类命名为
程序:
package scanner;
import java.util.*;
public class Scanner {
public static void main(String[] args)throws Exception {
System.out.println("Enter your name ");
Scanner scanner = new Scanner(System.in);
String data=scanner.nextLine();
System.out.println(data);
}
}
错误/输出:
运行:
输入您的姓名
Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - constructor Scanner in class scanner.Scanner cannot be applied to given types;
required: no arguments
found: java.io.InputStream
reason: actual and formal argument lists differ in length
at scanner.Scanner.main(Scanner.java:10)
Java Result: 1
BUILD SUCCESSFUL (total time: 1 second)
Scanner
,因为这会导致与java.util.Scanner的命名冲突!给你的班级起一个不同的名字,比如ScannerTest
。一般来说,您会希望避免为类名提供与键或公共核心Java类冲突的名称。
您已将类命名为Scanner
,因此在代码中引用简单名称Scanner
是指您自己的类(该类没有接受InputStream
的构造函数(,而不是java.util.Scanner
。
要么使用完全限定名java.util.Scanner
,要么将类重命名为内置Java类名以外的名称。
System.out.println("Enter your name ");
java.util.Scanner scanner = new java.util.Scanner(System.in);
String data=scanner.nextLine();
System.out.println(data);
在这里,类的名称和java.util.Scanner是相同的。Java试图与您的构造函数相匹配。默认情况下,将添加空构造函数。您的代码中没有参数构造函数匹配项。