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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 石好强 中级黑马   /  2012-4-13 00:12  /  2548 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 石好强 于 2012-4-13 06:08 编辑


  1. import java.io.*;
  2. class MyLineNumberReader extends BufferedReader
  3. {

  4. private FileReader fr;

  5. MyLineNumberReader(FileReader fr)
  6. {

  7. super(in){}
  8. this.fr = fr;

  9. }

  10. public void MysetLineNumber(int num)
  11. {
  12. int lnum = num;
  13. int ch = 0;

  14. while((ch=fr.read())!=-1)
  15. {
  16. if((char)ch=='\r')
  17. lnum++;
  18. }

  19. }

  20. public int MygetLineNumber()
  21. {
  22. int ch = 0;
  23. int lnum = 1;
  24. while((ch=fr.read())!=-1)
  25. {
  26. if((char)ch=='\r')
  27. lnum++;
  28. }

  29. }

  30. public void close() throws IOException
  31. {
  32. fr.close();
  33. }

  34. public int read(char[] cbuf,int off,int len) throws IOException
  35. {
  36. fr.read(cbuf,off,len);

  37. }



  38. }




  39. class MyLineNumberReaderDemo
  40. {
  41. public static void main(String[] args)
  42. {
  43. FileReader fr = new FileReader("PersonDemo.java");

  44. MyLineNumberReader mlnr = new MyLineNumberReader(fr);

  45. String line = null;
  46. while((line = mlnr.readLine())!=null)
  47. {
  48. System.out.println(mlnr.MygetLineNumber()+":"+line);
  49. }


  50. }
  51. }

复制代码
报错:

D:\java1203\day19>javac MyLineNumberReaderDemo.java
MyLineNumberReaderDemo.java:12: 需要 ';'
                super(in){}
                         ^
1 错误


请问这个父类的构造函数应该怎么写啊?

改成super(in);
仍然有报错,有高人帮忙改下代码吗,看看这个代码到底问题出在哪了。

5 个回复

倒序浏览
super(int);就行了啊,你后面加了大括号是什么意思?
回复 使用道具 举报
super(in){}

this.fr = fr;


直接super(in);就可以了;

回复 使用道具 举报
03.import java.io.*;

04.class MyLineNumberReader extends BufferedReader

05.{

06.

07.private FileReader fr;

08.

09.MyLineNumberReader(FileReader fr)

10.{

11.

12.super(in){}//改为super(in)就行了,固定格式记住就行。

13.this.fr = fr;

14.

15.}

16.

17.public void MysetLineNumber(int num)

18.{

19.int lnum = num;

20.int ch = 0;

21.

22.while((ch=fr.read())!=-1)

23.{

24.if((char)ch=='\r')

25.lnum++;

26.}

27.

28.}

29.

30.public int MygetLineNumber()

31.{

32.int ch = 0;

33.int lnum = 1;

34.while((ch=fr.read())!=-1)

35.{

36.if((char)ch=='\r')

37.lnum++;

38.}

39.

40.}

41.

42.public void close() throws IOException

43.{

44.fr.close();

45.}

46.

47.public int read(char[] cbuf,int off,int len) throws IOException

48.{

49.fr.read(cbuf,off,len);

50.

51.}

52.

53.

54.

55.}

56.

57.

58.

59.

60.class MyLineNumberReaderDemo

61.{

62.public static void main(String[] args)

63.{

64.FileReader fr = new FileReader("PersonDemo.java");

65.

66.MyLineNumberReader mlnr = new MyLineNumberReader(fr);

67.

68.String line = null;

69.while((line = mlnr.readLine())!=null)

70.{

71.System.out.println(mlnr.MygetLineNumber()+":"+line);

72.}

73.

74.

75.}
回复 使用道具 举报
MyLineNumberReader 继承了BufferedReader ,所以子类可以显式的调用父类的构造函数,super(in);就可以完成。
回复 使用道具 举报
12,13行代码改为 super(fr);
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马