初学java懵了,这个报错是为什么?
初学java类的命名问题之一
一. 异常现象
初学java的小伙伴们,大家快来围观啊,看看下面的问题:
二. 异常原因
其实这个问题!就是命名导致的问题!
怎么个意思?命名还能导致问题?
给你举个例子:今天我跟我老婆讨论去谁家过年的问题。
我:老婆,我妈问咱们,今年是在我妈这过年,还是去你妈那过年。
老婆:(很生气)......你什么意思,咱们都结了婚了,你还跟我分你妈、我妈?!都是咱妈!!!给你重新组织语言的机会!
我:(汗).......好好。那我说了哈,咱妈问咱们,今天是在咱家过年,还是在咱妈家过年。如果咱们在咱妈家过年,咱妈就提前准备点东西,让咱们带过去。如果咱们在咱妈家过年,咱们也准备点东西,让咱们给咱妈提前送过去。你定,咱们去哪个妈家过年,嘿嘿.......
以上代码中问题的产生原因,其实就是题主自己的定义的Scanner类名(咱妈),与Java自身的 java.util.Scanner(咱妈) 命名重名造成的问题!
三. 解决办法
那这个问题该如何解决呢?很简单,如下:
1. Java中定义的类名是Scanner,那么在本类中使用时,默认这个Scanner就是你自己定义的Scanner。因为类中默认有一个空参的构造器,所以,去掉System.in即可!
2. 如果你本意是使用jdk自带的Scanner输入管理对象,那么请加定语,即代码写成如下形式:
java.util.Scanner sc = new java.util.Scanner(System.in);
3. 或者修改本类的类名,不要与系统自带的类名相同,这样最简单。
相关推荐HOT
更多>>初学java懵了,这个报错是为什么?
那我说了哈,咱妈问咱们,今天是在咱家过年,还是在咱妈家过年。Java中定义的类名是Scanner,那么在本类中使用时,默认这个Scanner就是你自己定...详情>>
2023-03-29 17:41:52xml解析器
SAX解析器:基于事件驱动的解析器,逐行读取XML文件并触发相应的事件,适用于处理大型XML文件,但需要手动编写事件处理器来处理XML文件中的数据...详情>>
2023-03-21 16:03:51java全局变量
如果全局变量是一个对象,则可以更改该对象的状态,即使变量本身是final类型。当一个方法被调用时,会为该方法在栈上分配一块内存空间,用于存...详情>>
2023-03-17 10:01:40带你手把手解决Java常见Bug
刚开始学习Java语言的小伙伴, 很可能被各种各样的程序bug搞得焦头烂额, 甚至被劝退。别怕,小编将手把手带你了解Java中的异常体系, 如何识别Bug...详情>>
2023-03-13 16:05:00