A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

请好心人士帮忙看一下
  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.         }
复制代码



评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1 淡定

查看全部评分

12 个回复

倒序浏览
类名定义不正确
回复 使用道具 举报
rel4x 发表于 2014-11-15 22:25
类名定义不正确

为什么不正确呀 我这类名是默认类型
回复 使用道具 举报
import java.io.*;
class LineNumberReader{}
跟系统类名重复了

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

回复 使用道具 举报
dong53821713 发表于 2014-11-16 10:01
import java.io.*;
class LineNumberReader{}
跟系统类名重复了

谢谢啦  哎!总是犯这种错误 我自己都受不了啦
回复 使用道具 举报
本帖最后由 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);

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1 赞一个!

查看全部评分

回复 使用道具 举报
dong53821713 发表于 2014-11-16 10:01
import java.io.*;
class LineNumberReader{}
跟系统类名重复了

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

恩恩 好的 谢谢
回复 使用道具 举报
OCTSJimmy 发表于 2014-11-16 10:10
楼主,是这样的:
1、你最后少了一个右大括号“}”  谬误别看了……[/bac ...

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

点评

对的,完全正确。  发表于 2014-11-16 10:35
回复 使用道具 举报
定义类名的时候,尽量不要跟系统的类名进行重名
回复 使用道具 举报
zhangyangLengen 发表于 2014-11-16 15:02
定义类名的时候,尽量不要跟系统的类名进行重名

恩恩 好的
回复 使用道具 举报
zhangyangLengen 发表于 2014-11-16 15:02
定义类名的时候,尽量不要跟系统的类名进行重名

恩恩 好的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马