Java的第一个项目--龟兔赛跑学习到的知识点

本文介绍了在Java编程中实现龟兔赛跑项目时,如何使用随机数生成功能格,以及如何通过Scanner实现用户输入控制流程。重点讲解了如何确保随机数的唯一性和用户交互的暂停机制。
摘要由CSDN通过智能技术生成

对于第一个项目–龟兔赛跑学习到的知识点

在学习java的过程中 我们被分配了属于我们的第一个java项目–龟兔赛跑 他的项目思路是这样的

龟兔赛跑:

–普通格,共100格 _ _

龟:每次随机移动1至3格兔子:每次随机移动1至6格

每20格会随机出现以下功能格各一次(不会在同一格内出现两种或两种以上功能)

功能格:(**和^可以连续执行,@@和==不能连续执行)**幸运星格:选手可再行动一次@@地雷格:兔子回到上数两个地雷格,龟回到上一地雷格(若后方无地雷格则回到起点)==传送格:兔子到达下一传送格,龟到达下数两个传送格(若前方无传送格则到达终点)||树格:兔子停止三次行动^下坡格:龟前进10格

对于龟和兔子的随机移动的格数 就会接触一个新的知识点—随机数

关于随机数 我们可以有两种写法

Random rand = new Random();//定义一个Random对象
int a = rand.nextInt(bound);//定义一个整型变量a 用来接收rand产生的随机数

因为使用random来获取随机数的范围默认是0-1左闭右开,所以我们可以通过改变bound的值来自行定义获取随机数的范围

比如

Random rand = new Random();
int a = rand.nextInt(20);//获取一个随机数 范围在0-19

当然 如果只改变bound的值只会对右区间的值进行改变 所以我们可以通过整体加上一个值,同时改变他的左区间范围

Random rand = new Random();
int a = rand.nextInt(10) + 10;//获取一个随机数 范围在10-19

上述记录的是使用random获取随机数的第一种写法 我们也可以使用util类中的Math.random方法来获取随机数

int a = (int)(Math.random()*20);//获取一个随机数 范围在0-19

那么 对于本题的地图应该如何编写呢?

这里也要用到随机数的方法 而且要保证每次获取的随机数不能重复 不然会造成功能格丢失的情况

要保证每次获取的随机数不重复 应该怎么编写?

这里我们可以使用一个取巧的办法 就是让索引和数组中存的值保持一致 每次取一个随机数 就让他等于最后一个元素 然后缩小范围 让下一次接收的随机数等于倒数第二个元素 以此类推

public String[] getMap(){
    //定义一个字符串数组 让他的长度等于地图的长度
    String[] map = new String[100];
    //先将这个数组全填充上普通格的字符
    Arrays.fill(map,"__ ");
    //定义一个二维数组 长度为地图中全部的功能格数量
    int[][] gn = new int[5][5];
    //再定义一个整型数组 让索引与数组中的值保持一致 并用来接收随机数
    int[] index = new int[100];
    //将100个格平均分为五份 每份20个格
    for (int i = 0;i<5;i++){
        for (int j = 0 + i * 20;j<20 + i * 20;j++){
            index[j] = j;
        }
        //获取随机数
        for (int k = 0;k<5;k++){
             int a = (int)(Math.random()*(20 - k)) + i * 20; 
             int temp = index[a];
             index[a] = index[19 - k + i * 20];
             index[19 - k + i * 20] = temp;
             gn[k][i] = temp;   
        }
    }
    for (int i = 0;i<5;i++){\
        map[gn[0][i]] = "** ";
        map[gn[1][i]] = "** ";
        map[gn[2][i]] = "** ";
        map[gn[3][i]] = "** ";
        map[gn[4][i]] = "** ";        
    }
    return map;
}

以上就是对于本题地图中获取随机功能格的编写代码

如果我们想让用户输入回车才能进行程序的下一步 应该如何编写?

这里我们可以用到util类中的Scanner

代码如下:

System.out.println("苹果");
System.out.println("按回车进行下一步");
new Scanner(System.in).nextLine();
System.out.println("香蕉");

运行后 不会输出香蕉 敲击回车之后 才会显示香蕉

  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值