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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张超 中级黑马   /  2012-11-12 08:31  /  1904 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 zhangchao 于 2012-11-12 08:33 编辑

/*具体情况是这样的,两个类都能够独立的正常运行,其中Demo类是一个模拟BufferedReader的,LineNumber是模拟LineNumberReader的,我想把在LineNumber中创建一个Demo的实例,但是定义以后报找不到类。
他们是属于同一个包,不说了 我上代码*/
package SystemIO;
import java.io.*;
import SystemIO.*;//他们都位于此包。
public  class LineNumber {
public static void main(String[] args)throws IOException {

  Reader fr=new FileReader("SystemIO\\SystemDemo.java");
  LineNumberReader lnr=new LineNumberReader(fr);
// SystemIO.Demo bur=new SystemIO.Demo(fr);//创建自己BufferedReader的对象。
Demo bur=new Demo(fr);//用Demo或者SystemIO.Demo创建的在编译的时候都会报找不到符号,
  
  
  String len=null;
   lnr.setLineNumber(200);
   int count=lnr.getLineNumber();
  while((len=bur.myReadLine())!=null){//一次读一行
   System.out.println(count+len);
   count++;
  }
  fr.close();
  }
}


package SystemIO;
import java.io.*;
public class Demo extends Reader  {//模拟一个与BurreredReader一样的类,能够提供他的readLine();原理是先写到一个缓冲区里面。
private Reader r;
public Demo(Reader r){
  this.r=r;
}
public String myReadLine()throws IOException{//模拟BufferedReader的readLine()方法。
  StringBuilder sb=new StringBuilder();
  int len=0;
  while((len=r.read())!=-1){
   if(len=='\r')
    continue;
   if(len=='\n')
    break;
   else
    sb.append((char)len);//转成字符。
  }
  if(sb.length()!=0)
   return sb.toString();
  return null;//为什么要返回空,如果不返回就会造成调用这个方法时会无限循环。
}
public void myClose() throws IOException{
  r.close();
}
//覆盖掉抽象方法。
public int read(char[] cbuf, int off, int len) throws IOException {
  // TODO Auto-generated method stub
  return r.read(cbuf,off,len);
}
@Override
public void close() throws IOException {
  // TODO Auto-generated method stub
  
}
}

4 个回复

倒序浏览
报错 如下------------------------------------------



D:\workspace\1\cn.heima\src\SystemIO>javac LineNumber.java
LineNumber.java:14: 找不到符号
符号: 类 Demo
位置: 类 SystemIO.LineNumber
        Demo bur=new Demo(fr);
        ^
LineNumber.java:14: 找不到符号
符号: 类 Demo
位置: 类 SystemIO.LineNumber
        Demo bur=new Demo(fr);
                     ^
2 错误
回复 使用道具 举报

回帖奖励 +3 黑马币

看看你的classpath配置是不是有"."
回复 使用道具 举报
同一个包之间引用类,好像不要import哦,可以直接用,
前提是,你调用的类已经编译成.class文件了

评分

参与人数 1技术分 +1 收起 理由
奋斗的青春 + 1 赞一个!

查看全部评分

回复 使用道具 举报
王永荣 发表于 2012-11-12 09:27
同一个包之间引用类,好像不要import哦,可以直接用,
前提是,你调用的类已经编译成.class文件了 ...

谢谢  按照你的分析重新编译了一遍,好了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马