注册 登录
编程论坛 JAVA论坛

【求助】关于Math类中的random的问题

汪小贱 发布于 2017-04-26 21:59, 1719 次点击
Java中math类中Math.random()中产生的随机数是否会根据程序中的要求而随机产生
像这个书中的电梯问题?
程序代码:
package name1;

public class TestGoodElevator {
    public static void main(String args[])
    {
        GoodElevator e2=new GoodElevator();
        e2.openDoor();
        e2.closeDoor();
        e2.goUp();
        e2.goUp();
        System.out.println("电梯在等"+e2.getFloor()+"层");
        e2.openDoor();
        e2.closeDoor();
        e2.goDown();
        e2.openDoor();
        e2.closeDoor();
        e2.goDown();
        e2.goDown();
        if(e2.getFloor()!=5 && !e2.isOpen())
            e2.setFloor(5);
        e2.openDoor();
        e2.closeDoor();
        e2.setFloor(10);
        System.out.println("------------电梯测试结束-----------");
    }

}
class GoodElevator
{
    private boolean doorOpen=false;
    private int floor=1;
    private int weight=0;
    final int CAPACITY=1000;
    final int TOP_FLOOR=5;
    final int BOTTOM_FLOOR=1;
   
    public void openDoor()
    {
        doorOpen=true;
    }
   
    public void closeDoor()
    {
        checkWeightSecsors();
        if(weight<=CAPACITY)
        {
            doorOpen=false;
        }
        else
            System.out.println("超重,门不能关!");
    }
   
    private void checkWeightSecsors()
    {
        weight=(int)(Math.random()*1500);
        //System.out.println(Math.random());
        System.out.println("当前乘客总重量是:"+weight+"公斤");
    }
   
    public void goUp()
    {
        if(!doorOpen)
        {
            if(floor<TOP_FLOOR)
            {
                floor++;
                System.out.println("电梯已经上到第"+floor+"层");
            }
            else
                System.out.println("电梯已在最高层,无法上升!");
        }
        else
            System.out.println("电梯门未关,不能上升!");
    }
   
    public void goDown()
    {
        if(!doorOpen)
        {
            if(floor>BOTTOM_FLOOR)
            {
                floor--;
                System.out.println("电梯已经下降到第"+floor+"层");
            }
            else
                System.out.println("电梯已经在最底层,无法下降!");
        }
        else
            System.out.println("电梯门未关,不能下降!");
    }
   
    public void setFloor(int goal)
    {
        if(goal>=BOTTOM_FLOOR && goal<=TOP_FLOOR)
        {
            while(floor!=goal)
            {
                if(floor<goal)
                    goUp();
                else
                    goDown();
            }
            System.out.println("电梯按要求停在第"+floor+"层");
        }
        else
            System.out.println("没有第"+goal+"层");
    }
   
    public int getFloor()
    {
        return floor;
    }
   
    public boolean isOpen()
    {
        return doorOpen;
    }
}
2 回复
#2
zsh9810229842017-04-26 22:06
这问题不是看的很明白

但Math.random()将产生0~1之间的浮点型随机数,控制范围一般在乘一个整数
#3
汪小贱2017-04-27 08:17
回复 2楼 zsh981022984
这个我知道,我是想问math.random()在0-1之间随机产生的小数是否会受到像题目中在main中的goUp()以及goDown()之类的影响?
1