黑马程序员技术交流社区

标题: 为什么提示LineNumberReader的构造函数没有定义 [打印本页]

作者: Fightingforever    时间: 2014-11-15 21:42
标题: 为什么提示LineNumberReader的构造函数没有定义
请好心人士帮忙看一下
  1. import java.io.*;
  2. class LineNumberReader
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                 FileReader fr=null;
  7.                 LineNumberReader lnr=null;
  8.                 try
  9.                 {
  10.                         fr=new FileReader("MyBufferedLineDemo.java");
  11.                         lnr=new LineNumberReader(fr);
  12.                         String s=null;
  13.                         while((s=lnr.readLine())!=null)
  14.                         {
  15.                                 System.out.println(s);
  16.                                 }
  17.                         }
  18.                 catch(IOException e)
  19.                 {
  20.                         System.out.println(e.toString());
  21.                         }
  22.                 finally
  23.                 {
  24.                         try
  25.                         {
  26.                                 if(lnr!=null)
  27.                                         lnr.close();
  28.                                 }
  29.                         catch(IOException e)
  30.                         {
  31.                                 System.out.println(e.toString());
  32.                                 }
  33.                         }
  34.                 }
  35.         }
复制代码




作者: rel4x    时间: 2014-11-15 22:25
类名定义不正确
作者: Fightingforever    时间: 2014-11-16 09:48
rel4x 发表于 2014-11-15 22:25
类名定义不正确

为什么不正确呀 我这类名是默认类型
作者: dong53821713    时间: 2014-11-16 10:01
import java.io.*;
class LineNumberReader{}
跟系统类名重复了
作者: Fightingforever    时间: 2014-11-16 10:09
dong53821713 发表于 2014-11-16 10:01
import java.io.*;
class LineNumberReader{}
跟系统类名重复了

谢谢啦  哎!总是犯这种错误 我自己都受不了啦
作者: OCTSJimmy    时间: 2014-11-16 10:10
本帖最后由 OCTSJimmy 于 2014-11-16 10:16 编辑

楼主,是这样的:
1、你最后少了一个右大括号“}”  谬误别看了……{:3_62:}
2、由于你的LineNumberReader类名与java.io包中提供的LineNumberReader类重名,所以你第11行必需写包名来调用java.io.*中的那个系统自带的LineNumberReader,否则就必须自己实现LineNumberReader(FileReader)。
因为你没有指明到底是哪个LineNumberReader,Java执行器会认为你调用的是自身,以致于出错。

所以写程序时,除非需要覆盖系统的实现,不然不建议与系统提供的类重名。

综上:解决方法:
第7行改为:java.io.LineNumberReader lnr = null;
第11行改为:lnr = java.io.LineNumberReader(fr);

作者: Fightingforever    时间: 2014-11-16 10:11
dong53821713 发表于 2014-11-16 10:01
import java.io.*;
class LineNumberReader{}
跟系统类名重复了

谢谢啦  哎!总是犯这种错误 我自己都受不了啦
作者: Fightingforever    时间: 2014-11-16 10:14
OCTSJimmy 发表于 2014-11-16 10:10
楼主,是这样的:
1、你最后少了一个右大括号“}”
2、由于你的LineNumberReader类名与java.io包中提供的Li ...

恩恩 好的 谢谢
作者: Fightingforever    时间: 2014-11-16 10:32
OCTSJimmy 发表于 2014-11-16 10:10
楼主,是这样的:
1、你最后少了一个右大括号“}”  谬误别看了……[/bac ...

恩恩 好的 谢谢啦  
第11行写为
  1. lnr=new java.io.LineNumberReader(fr);
复制代码

作者: zhangyangLengen    时间: 2014-11-16 15:02
定义类名的时候,尽量不要跟系统的类名进行重名
作者: Fightingforever    时间: 2014-11-16 21:00
zhangyangLengen 发表于 2014-11-16 15:02
定义类名的时候,尽量不要跟系统的类名进行重名

恩恩 好的
作者: Fightingforever    时间: 2014-11-16 21:02
zhangyangLengen 发表于 2014-11-16 15:02
定义类名的时候,尽量不要跟系统的类名进行重名

恩恩 好的




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2