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;
            }
       }
    }
}

转载于:https://www.cnblogs.com/longjin2018/p/9848859.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值