一. 异常现象
最近壹哥的老表开始学Java啦,结果学了还不到两天,就遇到了他解决不了的问题,然后就跑来问我了。不知有没有其他初学java的小伙伴,大家可以过来围观一下,看看下面的问题你有没有遇到过。
二. 异常原因
那上面的这个问题是怎么产生的?又该怎么解决呢?大家先不要慌,且听壹哥来给大家分析一把。其实初学者遇到的绝大多数问题,都是因为粗心马虎导致的。而这个问题,也是如此。如果我们仔细观察报错的提示信息,就会发现这是因为命名不规范而导致的问题!
怎么个意思?命名不规范还能导致什么问题?当然啦,就好比在清代,你非得叫”朱反清“,我觉得十有八九是要被敲脑壳的。
再给大家举个例子:今天我跟我老婆讨论去谁家过年的问题。
我:老婆,我妈问咱们,今年是在我妈这过年,还是去你妈那过年。
老婆:(很生气)......你什么意思,咱们都结了婚了,你还跟我分你妈、我妈?!都是咱妈!!!给你重新组织语言的机会!
我:(汗).......好好。那我说了哈,咱妈问咱们,今天是在咱家过年,还是在咱妈家过年。如果咱们在咱妈家过年,咱妈就提前准备点东西,让咱们带过去。如果咱们在咱妈家过年,咱们也准备点东西,让咱们给咱妈提前送过去。你定,咱们去哪个妈家过年,嘿嘿.......
以上代码中问题的原因,其实就是因为我老表定义的Scanner类名(咱妈),与Java自身的 java.util.Scanner(咱妈) 命名重名导致的问题!
三. 解决办法
那这个问题该如何解决呢?很简单,可以采用如下方法:
- 第一种解决办法,是采用自己定义的Scanner类。虽然这里会有两个Scanner类,但我们在本类中使用时,默认的Scanner是你自己定义的Scanner类,因为类中默认有一个空参的构造器,所以去掉System.in即可!
- 第二种解决办法,是采用Java自带的Scanner类。如果你的本意是使用jdk自带的Scanner类来输入管理对象,那么请加定语,即代码要写成如下形式:
java.util.Scanner sc = new java.util.Scanner(System.in);
3.第三种解决办法,就是规范类的命名。其实最好的解决办法,就是修改自己定义的类的名称,不要与系统自带的类名相同,这样是最简单也最优的办法。
以上就是壹哥给大家提供的解决办法,你还有更好的解决办法吗?
现在你知道该怎么解决这个问题了吗?如果你还有其他问题,可以私信壹哥,或者在评论区给壹哥留言哦!
标签:解决办法,过年,java,Scanner,壹哥,初学,咱妈,异常 From: https://blog.51cto.com/u_7044146/5966095