自己写一遍MyGetLineNumber()

今天看毕老师讲了MyGetLineNumber(), 课后练习是自己写代码实现MyGetLineNumber()方法, 然后自己写了一遍, 一开始就是一个单纯的计数器, 每次写入换行的时候在行开头打印该计数器.  完全和行没有什么关系. 只要调用一次就行数+1;

看了毕老师的答案后, 修改为重写BufferedReader类中的readLine()方法, 每次调用readLine()方法时, 行数+1; 这样就比较科学了.


import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;
class MyLineNumberReader extends BufferedReader{
	private Reader fr;
	private int line = 0;
	MyLineNumberReader(Reader fr){
		super(fr);
	}
	
	
	@Override
	public String readLine() throws IOException {
		// TODO Auto-generated method stub
		line++;  //每次调用读行的时候, 行数+1;
		return super.readLine();
	}


	int MyGetLineNumber() throws IOException{
//		fr.readLine();	//之前自己写的计数器, 还假惺惺的调用了readLine(), 调试发现根本就是一点用都没有, 直接line++就足够了.
//		line++;	//之前自己写的计数器, 每次调用MyGetLineNumber()之后line+1, 完全就是单纯的自增, 完全和readline脱离关系了, 不科学. 
				//看了视频后, 修改为重写readLine(),在每次调用readLine()时,line+1
		return line;			
	}
	
	
	void MySetLineNumber(int line_from){
		this.line=line_from-1;	//接受输入值来设定lineNumber从哪开始, 输入100就从100开始, 不应该从101开始;  无所谓的事情, 不要在意这些细节;
	}
}





public class MyLineNumberReaderDemo {

	/**
	 * @author liuyue
	 * @param args
	 */
	
	
	//调用MyLineNumberReader类过程, 不必多说.
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		MyLineNumberReader mlnr = null;
		FileReader fr = null;
		
		
		try {
			fr = new FileReader("D:\\123.txt");
		} catch (FileNotFoundException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
		
		
		mlnr= new MyLineNumberReader(fr);
		

		
		
		try {
//			mlnr.MySetLineNumber(100);
			String lineText=null;
			while((lineText=mlnr.readLine())!=null){
				System.out.println(mlnr.MyGetLineNumber()+"	"+lineText);				
			}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			try {
				mlnr.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		
		
	}

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值