且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

帮助大家理解java中的随机和继承,动态绑定.

更新时间:2022-06-28 03:55:35

package com.ykmimi.jav***chengsixiang;
/**
 * 形状的继承 随机形状生成器
 * @author ukyor
 */
import java.util.Random;

class Shape{
    public void draw() {}
    //擦除 erase
    public void erase() {}
}

//类 圆形 继承自基类 Shape形状
class Circle extends Shape{
    public void draw() {System.out.println("Circle.draw()");}
    public void erase() {System.out.println("Circle.erase()");}
}
//类 矩形 继承自基类 Shape形状
class Square extends Shape{
    public void draw() {System.out.println("Square.draw()");};
    public void erase() {System.out.println("Square.erase)");};
}
//类 三角形 继承自基类 Shape形状
class Triangle extends Shape{
    public void draw() {System.out.println("Triangle.draw()");};
    public void erase() {System.out.println("Triangle.erase)");};
}
//随机形状生成器
class RandomShapeGenerator{
    //随机数 (0~(30~110))~(120/200)
    private static int randomNumber = (int)((Math.random()*(30+Math.random()*80))+Math.random()*90);
private Random rand = new Random(randomNumber); public Shape next() { switch(rand.nextInt(3)) { default: case 0 : return new Circle(); case 1 : return new Square(); case 2 : return new Triangle(); } } public void print() { System.out.println(randomNumber); } } public class Shapes { //创建静态的随机形状生成器的对象 gen private static RandomShapeGenerator gen = new RandomShapeGenerator(); public static void main(String[] args) { //声明形状数组 s 长度为 9 ; Shape[] s = new Shape[9]; for(int i=0;i<s.length;i++) { //调用gen.next()方法返回随机数0~2 0 1 2 s[i] = gen.next(); } //遍历s数组到每个shp for(Shape shp: s) { //每个shp执行draw方法 shp.draw(); } //输出print()方法中的randomNumber gen.print(); } }

 

 

 

//

package 随机数;
/**
 * 理解随机数,随机数组
 * @author ukyozq
 */
import java.util.Random;

public class RandomNumberOrArray{

    public static void main(String[] args) {
    
        //声明随机数int rand.范围[0,98]
        int rand = (int)(Math.random()*99);
        //输出,每次运行会输出不同的数字.
        System.out.println(rand);
        
        //理所当然我们想到要用数组装入更多随机数
        int[] randArray = new int[10];
        for(int i=0;i<randArray.length;i++)
        {
            //随机数赋值到数组的每一位
            randArray[i]=rand;
        }
        for(int x:randArray)
        {
            //输出 但注意:结果的数据int虽然每次运行不同,为随机产生,
            //但数组的每一位都是这一个数.也就是说,该数组的每一位,都
            //只是赋值了这一个随机数.是相同的.
            System.out.print(x+" ");
        }
        
        //think:那什么办法生产随机的数到数组中呢?生成随机数组?
        //方法1,蠢的办法:声明多个rand.(rand1,rand2,rand3)
        int rand1 = (int)(Math.random()*99);
        int rand2 = (int)(Math.random()*99);
        int rand3 = (int)(Math.random()*99);
        //此输出确实不相同,将rand1,2,3分别赋值到数组的0,1,2位置上,
        //但是该方法蠢到不能再蠢.
        System.out.println("\n"+rand1+" "+rand2+" "+rand3);
        int rand4 = (int)(Math.random()*99);
        
        //在随机的生产中,除了Math还有Random的声明:
        Random rand_1 = new Random();
        //new Random()方法产生的是伪随机数
        System.out.println(rand_1);
        //这样输出↑只是输出的该对象而不是数字,输出数字使用方法:
        System.out.println(rand_1.nextInt(10));
        //↑该方法输出了范围[0,9]的随机数
        
        //那么用该方法赋值随机数组:
        for(int i=0;i<randArray.length;i++)
        {
            //随机数赋值到数组的每一位
            //nextInt(范围) 为[0,99]范围内的随机数
            randArray[i]=rand_1.nextInt(100);
        }
        for(int x:randArray)
        {
            System.out.print(x+" ");
        }
        
        
    }
}

 

将编程看作是一门艺术,而不单单是个技术。 敲打的英文字符是我的黑白琴键, 思维图纸画出的是我编写的五线谱。 当美妙的华章响起,现实通往二进制的大门即将被打开。