Eclipse中Scanner使用报错:System.in/out无法解析或不是字段
问题解决:System.in/out无法解析的编译错误
问题原因
你自定义的类名是System,和Java核心库中的java.lang.System类重名。Java会优先加载当前类,所以代码里的System.in、System.out会指向你自己的System类,而这个类并没有定义in和out字段,因此触发编译错误。
解决方案
方案1:修改类名(推荐)
把自定义类的名称改成非核心类重名的名字,比如SystemDemo,修改后代码如下:
import java.util.Scanner; public class SystemDemo { public static void main(String [] args) { Scanner sc = new Scanner(System.in); System.out.println("Please enter an integer"); int i = sc.nextInt(); System.out.println(i); } }
方案2:使用全限定类名(不推荐)
如果必须保留System作为类名,调用核心库的System类时需要加上完整包路径java.lang.System:
import java.util.Scanner; public class System { public static void main(String [] args) { Scanner sc = new Scanner(java.lang.System.in); java.lang.System.out.println("Please enter an integer"); int i = sc.nextInt(); java.lang.System.out.println(i); } }
补充说明
更新或重装Eclipse无法解决该问题,因为这是代码命名冲突导致的语法问题,与IDE环境无关。
内容的提问来源于stack exchange,提问作者CHUA CHEN FENG VAUGHN
相关产品推荐
相关产品推荐

