17.2.2 通过实例熟悉Random类的常用方法

前面的小节中,讲述了Random类的基本概念和常用的方法,以及在什么场合使用Random类。下面将通过一些具有代表性的实例,介绍如何使Random类在实际开发工作中发挥作用。

【实例17.5】编写一个扑克游戏程序,游戏中需要均匀地插排,即任意选择两张扑克,进行彼此交换。程序如下:


01 import java.util.*;

02 ///创建一个随机类对象rnd

03 ///创建一个字符串类型的数组card

04 ///通过循环语句,不断地从数组中取出两个对象,对其进行比较和排序

05 public class file5

06 {

07 public static void main(String[]args)

08 {

09 try

10 {

11 Random rnd=new Random();

12 String[]card={"方块1","方块2","方块3","方块4","方块5","方块6","方块7","方块8","方块9"};

13 14

String str;

15 int x, y;

16 for(int i=0;i<100;i++)

17 {

18 x=rnd.nextInt(9);

19 y=rnd.nextInt(9);

20 str=card[x];

21 card[x]=card[y];

22 card[y]=str;

23 }

24 for(int i=0;i<9;i++)

25 {

26 System.out.println(card[i]);

27 }

28 }

29 catch(Exception e){}

30 }

31 }


【代码说明】第9行和第29行实现了程序的异常处理功能。第12行定义一个字符串数组card,然后第16~23行随意抽取两张扑克进行位置调换。第24~27行循环输出字符串数组card的数据。

【运行效果】


方块3

方块6

方块4

方块5

方块8

方块2

方块9

方块1

方块7

再运行:

方块3

方块9

方块5

方块8

方块7

方块6

方块2

方块1

方块4


通过这个程序段,读者可以体会到Random类的好处所在。现在再来看一个比较复杂的实例。

【实例17.6】编制一个剪子、包袱、锤子的游戏程序,计算机的选择由随机发生器实现。


01 import java.util.*;

02 import java.io.*;

03 ///创建一个随机类rnd

04 ///通过分支语句来输出不同的结果

05 public class file6

06 {

07 public static void main(String[]args)

08 {

09 try

10 {

11 Random rnd=new Random();

12 int i=0;

13 String[]hand={"剪子","锤子","包袱"};

14 System.out.println("开始游戏了");

15 System.out.print("剪子(0),锤子(1),包袱(2)中,选择哪一个呢?");

16 int c=System.in.read();

17 System.out.println("<结果>");

18 switch(c)

19 {

20 case'0':

21 System.out.println("玩家:"+hand[0]);

22 break;

23 case'1':

24 System.out.println("玩家:"+hand[1]);

25 break;

26 case'2':

27 System.out.println("玩家:"+hand[2]);

28 break;

29 }

30 int b=rnd.nextInt(3);

31 System.out.println("计算机:"+hand[b]);

32 if((c-49)>b)

33 {

34 System.out.println("玩家胜利!");

35 System.out.println("比分:1:0");

36 }

37 else if((c-49)<b)

38 {

39 System.out.println("计算机胜利!");

40 System.out.println("比分:0:1");

41 }

42 else if((c-49)==b)

43 {

44 System.out.println("平手!");

45 System.out.println("比分:0:0");

46 }

47 }

48 catch(Exception e){}

49 }

50 }


【代码说明】上面的程序段中,先使用随机类在第13行定义的划拳数组hand中,随机取一个。然后,用户选择一个,最后将两者进行比较,通过比较得出想要的结果。

【运行效果】


开始游戏了

剪子(0),锤子(1),包袱(2)中,选择哪一个呢?0

<结果>

玩家:剪子

计算机:锤子

计算机胜利!

比分:0:1

再运行

开始游戏了

剪子(0),锤子(1),包袱(2)中,选择哪一个呢?2

<结果>

玩家:包袱

计算机:剪子

玩家胜利!

比分:1:0