本帖最后由 张振纲 于 2012-8-10 17:40 编辑
- /*
- 需求:模拟一个LineNumberReader
- 思路:创建一个类,并且创建相应的方法
- 通过创建一个StringBuilder来作为缓冲区
- 添加一个计数器来输出linenumber
- */
- import java.io.*;
- class MyLine
- {
- private Reader r;
- private int lineNumber;
- MyLine(Reader r)
- {
- this.r = r;
- }
- public int getLineNumber()
- {
- return lineNumber;
- }
- public void setLineNumber(int t)
- {
- lineNumber=t;
- }
- public String readLine()
- {
- lineNumber++;
- int ch; <FONT color=#ff0000>为什么这里要定义整数常量?</FONT>
- StringBuilder sb= null;
- try
- {
- sb=new StringBuilder();
- while ((ch=r.read())!=-1)
- {
- if (ch=='\r')
- continue;
- if (ch=='\n')
- return sb.toString();
- else
- return sb.append((char)ch); <FONT color=red>//这里为什么会报错类型不兼容?</FONT>
- }
- if (sb.length!=0)
- {
- return sb.toString();
- }
- return null;
-
- }
- catch ( IOException e )
- {
- throw new RuntimeException("关闭流异常");
- }
- }
- }
- class MyLineNumberReader
- {
- public static void main(String[] args)
- {
- FileReader fr = new FileReader("CalendarTest.java");
- MyLine my = new MyLine(fr);
- String s = null;
- while (s = MyLine(fr)!=null)
- {
- System.out.print(MyLine());
- }
-
- }
- }
复制代码 写了一个程序错误不少,有很多地方不明白我已经标出来了,
麻烦大家给纠正下...... |