• Algs4-1.2.10编写一个类VisualCounter


    1.2.10编写一个类VisualCounter,支持加一和减一操作。它的构造函数接受两个参数N和max,其中N指定了操作的最大次数,max指定了计数器的最大绝对值。作为副作用,用图像显示每次计器变化后的值。
    答:Draw Point时操作次数作为X坐标,计数器值作为Y坐标。
    图片
    图片

    public class VisualCounter
    {
        private int maxOperationTimes;
        private int maxCountAbs;
        private int operationTimes;
        private int count;
       
        public VisualCounter(int N,int max)
        {
            maxOperationTimes=N;
            maxCountAbs=max;
            operationTimes=0;
            count=0;
        }  
       
        public void increment()
        {
           if (operationTimes<maxOperationTimes && Math.abs(count)<maxCountAbs)
           {
              operationTimes++;
               count++;
            }
        }
       
        public void decrease()
        {
           if (operationTimes<maxOperationTimes && Math.abs(count)<maxCountAbs)
           {
              operationTimes++;
               count--;
            }
        }
       
        public int tally()
        {
            return count;
        }
       
        public int operationTimes()
        {
            return operationTimes;
        }
       
        public boolean isEnd()
        {
          return  operationTimes>=maxOperationTimes || Math.abs(count)>=maxCountAbs ;
        }

        public void draw()
        {
            StdDraw.point(operationTimes,count);
        }


       
        public static void main(String[] args)
        {
            int N=Integer.parseInt(args[0]);
            int max=Integer.parseInt(args[1]);
            VisualCounter vC=new VisualCounter(N,max);
            int num;
            StdDraw.setXscale(0,N);
            StdDraw.setYscale(-1.0*max,max);
            while (true)
            {
                num=StdRandom.uniform(max/17);
                for(int j=0;j<num;j++)
                {
                     if (num%2==0)
                         vC.increment();
                     else
                         vC.decrease();  
                     vC.draw();
                     if(vC.isEnd()) return;
                }
           }
        }
    }

  • 相关阅读:
    x01.os.17: 换心术
    x01.os.16: 添加功能
    x01.os.15: 看上去很美
    JVM 栈帧之操作数栈与局部变量表
    IDEA字节码学习查看神器jclasslib bytecode viewer介绍
    java上下文Context类
    UML ——区分类图中的几种关系.md
    UML ——六种依赖关系.md
    JDK动态代理[1]----代理模式实现方式的概要介绍
    java方法句柄-----5.Method Handles in Java
  • 原文地址:https://www.cnblogs.com/longjin2018/p/9848859.html
Copyright © 2020-2023  润新知