package com.ykmimi.javabianchengsixiang; /** * 形状的继承 随机形状生成器 * @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+" "); } } }
将编程看作是一门艺术,而不单单是个技术。 敲打的英文字符是我的黑白琴键, 思维图纸画出的是我编写的五线谱。 当美妙的华章响起,现实通往二进制的大门即将被打开。