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