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>
/*
为什么要定义成int型,因为read方法返回的是字符,可以用ASCII码表示,所以用int型接收
*/
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>
//你的方法的返回类型是String,所以要把sb转换成String类型,写成sb.append((char)ch) .toString(); 就对了
}
if (sb.length!=0)//这里应该是length()属性不是length方法
{
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)//这里你也写错了,MyLine(fr)这里应该写一个读数据的方法,你写了一个加参数的类名,
//连new都没new,也就是说连对象都不是。当然是对象也不对。应该是readLine方法
{
System.out.print(MyLine());
}