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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 彭柏良 中级黑马   /  2014-12-4 11:59  /  986 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. import java.io.*;
  2. class MyBufferedReader
  3. {
  4.         private FileReader r;
  5.         MyBufferedReader(FileReader r)
  6.         {
  7.                 this.r = r;
  8.         }
  9.         public String myReadLine()throws IOException
  10.         {
  11.                 StringBuilder sb = new StringBuilder();
  12.                 int ch = 0;
  13.                 while((ch = r.read())!=-1)
  14.                 {
  15.                         if(ch == '\r')
  16.                                 continue;
  17.                         else if(ch == '\n')
  18.                                 return sb.toString();
  19.                         else
  20.                                 sb.append((char)ch);
  21.                 }
  22.                 if(sb.length()!=0)
  23.                         return sb.toString();
  24.                 return null;
  25.         }
  26.         public void myClose()throws IOException
  27.         {
  28.                 r.close();
  29.         }
  30. }
  31. class MyBufferedReaderDemo
  32. {
  33.         public static void main(String[] args)
  34.         {
  35.                 FileReader fr = null;
  36.                 try
  37.                 {
  38.                         fr = new FileReader("demo.txt");
  39.                         MyBufferedReader myBuf = new MyBufferedReader(fr);
  40.                         String line = null;
  41.                         while((line = myBuf.myReadLine())!=null)
  42.                         {
  43.                                 System.out.println(line);
  44.                         }
  45.                 }
  46.                 catch (IOException e)
  47.                 {
  48.                         throw new RuntimeException("fail to read");
  49.                 }
  50.                 finally
  51.                 {
  52.                         try
  53.                         {
  54.                                 if(fr != null)
  55.                                         myBuf.myClose();
  56.                         }
  57.                         catch (IOException e)
  58.                         {
  59.                                 throw new RuntimeException("fail to close");
  60.                         }
  61.                 }
  62.         }
  63. }
复制代码

评分

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

查看全部评分

5 个回复

倒序浏览
这个是编译的提示。

1.png (8.62 KB, 下载次数: 12)

1.png
回复 使用道具 举报
彭柏良 发表于 2014-12-4 12:00
这个是编译的提示。

MyBufferedReader myBuf = new MyBufferedReader(fr);这一句你该定义到try语句外面,试试就行了

评分

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

查看全部评分

回复 使用道具 举报
你说的这个在理,因为它被定义到try里面去了,别的语句会访问不到。但按照你这样改的话会出现NullPointerException,所以,这样改就可以了:try外面:MyBufferedReader myBuf = null;   
try里面:myBuf = new MyBufferedReader(fr);
回复 使用道具 举报
除了嵌套语句块,其它语句块不能相互访问变量。
回复 使用道具 举报
你主要作用域啦,一般你在{ }里面定义了变量,它作用域只会在这个{}里面,讲义将Myclass的定义放到函数开始吧。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马