当前位置:  技术问答>java相关

thinking in java中的一个例子

    来源: 互联网  发布时间:2015-02-08

    本文导语:  thinking in java中,内部类部分最后一个例子。实在看不懂 EventSet中的getnext是如何工作的,它是怎样控制event数组的? abstract public class Event {   private long evtTime;   public Event(long eventTime) {     evtTime = eventTime; ...

thinking in java中,内部类部分最后一个例子。实在看不懂
EventSet中的getnext是如何工作的,它是怎样控制event数组的?
abstract public class Event {
  private long evtTime;
  public Event(long eventTime) {
    evtTime = eventTime;
  }
  public boolean ready() {
    return System.currentTimeMillis() >= evtTime;
  }
  abstract public void action();
  abstract public String description();
}

class EventSet {
  private Event[] events = new Event[100];
  private int index = 0;
  private int next = 0;
  public void add(Event e) {
    if(index >= events.length)
      return; // (In real life, throw exception)
    events[index++] = e;
  }
  public Event getNext() {
    boolean looped = false;
    int start = next;
    do {
      next = (next + 1) % events.length;
      // See if it has looped to the beginning:
      if(start == next) looped = true;
      // If it loops past start, the list 
      // is empty:
      if((next == (start + 1) % events.length)
         && looped)
        return null;
    } while(events[next] == null);
    return events[next];
  }
  public void removeCurrent() {
    events[next] = null;
  }
}

public class Controller {
  private EventSet es = new EventSet();
  public void addEvent(Event c) { es.add(c); }
  public void run() {
    Event e;
    while((e = es.getNext()) != null) {
      if(e.ready()) {
        e.action();
        System.out.println(e.description());
        es.removeCurrent();
      }
    }
  }

|
getNext() just tries to get the next non-null Event (using an index "next" is bad, EventSet should provide an Enumerator or Iterator):

public Event getNext() {
    boolean looped = false;
    int start = next; //the current index is in "next", assume already processed, rememberd it
    do {
      next = (next + 1) % events.length; //go to next entry, go to the first entry if necessary
      // See if it has looped to the beginning:
      if(start == next) looped = true; //if back to where it starts, we are in a loop, apparently all the rest entries are empty (null)
      // If it loops past start, the list 
      // is empty:
      if((next == (start + 1) % events.length)
        && looped)
        return null;
    } while(events[next] == null);
   //got here? it means, we got a non-null entry
    return events[next];
  }

    
 
 

您可能感兴趣的文章:

  • 关于thinking in java 中的一个例子的问题(BangBean) 其中的JPanel怎么回事?
  • think in java 里的一个例子运行的问题
  • 一个JAVA继承的问题(Thinking in JAVA里的一个例子)
  • <Thinking in Java>的例子,运行出问题,帮我看看是什么问题...
  • 请教一个"thinking in java "(第一版)333页上,Snake克隆的例子的问题。请看过的人,解惑。谢谢
  • Thinking in Java 书上的例子运行不了
  • 这是THINK IN JAVA 上的例子,为什么会出错,帮忙看看
  • Thinking in Java 的一个例子,请高手给讲解一下
  • 100分:誰有thinking in java 2 的中文電子書和例子代碼,給我一份吧?
  • 我编译、运行 《Thinking in java》的第一例子,得不到结果,提示如下:
  • 早上看到China-Pub已经有<Thinking In C++>英文第2版卖了,而且<Thinking In Java 2E>也在预告了,强烈期待中......
  • 我想学JAVA ,是买THINK IN JAVA 还是JAVA2核心技术:卷1 好???
  • 请大家评价一下Thinking in Java第二版(中文)这本书如何,是否适合JAVA初学者?
  • 哪里还有Think in java!答者给分,谢谢
  • 《Thinking in Java》VS《The Java Programming Language》
  • 看完了core java1和thinking in java,看什么?
  • Think in Java
  • 高分征集Think in java(第2版)中文电子版
  • Thinking In Java 的第一个程序问题
  • Web服务器/前端 iis7站长之家
  • 我学java,已经看了《thinking in java》,编了一些程序,现在该看什么书呢?大家推荐一下
  • 从哪能下载Thinking in java 一书中的程序代码?
  • THINKING IN JAVA 第二版(中文)(经典之作品出版了)
  • 菜鸟问JAVA高手,对thinking in Java!有何心得!
  • Think in java 源码
  • 请问《Think in Java》的作者的网站网址是多少?
  • 请问哪里可以下载thinking in java 中的源代码?
  • THINK IN JAVA版本问题!
  • thinking in java 中提到的一本书
  • 急需《thinking in java》电子书!!!
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 《think in java》出第三版了!!!!
  • think in java书店有卖吗?
  • 有人能提供THINK IN JAVA 第二版的简体中文下载吗?
  • 关于Think in Java一书
  • Think第二版发布了!(本人开发的C语言跨平台开发库)
  • 我在Thinking in Java中遇到的Jni问题!
  • thinking in java se基本看完了,想搞jsp,请推荐经典书
  • 我记得有位大哥发给我一份中文版的think in java,能不能重发一次,谢谢!
  • 关于<<thinking in java>>中的源代码执行的问题
  • 看了《Think in jave》后,该看什么书呀,
  • 谁那有《Thinking in Java》的英文版(或哪有下载)GIVE ME啊!
  • 谁有《thinking in java》中的程序代码?重重有赏
  • 长沙哪里买到 thinking in java ?
  • where is thinking in java to download??
  • win98下可以运行那些jsp server???thinks
  • java in thinking 第一版翻译的真的不能读么?
  • 哪里有THINK IN JAVA 下载呀?(中文的)
  • 请问到哪儿能下载think in java.的电子版。
  • 各位高手,那有think in java 的电子书下载
  • 关于《Thinking in Java》


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3