#Day#
一.数组的随机赋值
Random
1.int类型的数组
1.1 定义随机数
Random r = new Random();
1.2 定义数组
int[] ary = new ary[5];//默认值[0,0,0,0,0]
1.3 赋值—>通过for循环遍历数组赋值
for(int i=0;i<=ary.length-1;i++) {
ary[i] = r.nextInt(100);//[0,100)
}
System.out.println(Arrays.toString(ary));
2.char类型的数组
2.1 定义随机数
Random r = new Random();
2.2 定义数组
char[] chs = new char[5];//默认值[,]
2.3 赋值—>同样通过for循环遍历注意A—Z:65—90
for(int i=0;i<=chs.length-1;i++) {
chs[i] = (char)(r.nextInt(26)+65);
}
System.out…println(Arrays.toString(chs));
二.定义函数—封装的思想
例:
Random r = new Random();
int[] ary1 = new int[5];
aryf1(r,ary1);
//等同于之前通过for循环赋值
//封装:封装具体赋值的操作–代码被反复使用
//方法:就是一组功能
//方法的定义:
// 1.必须要申明参数的类型,如果有参数的话,变量的名称则无所谓
// 2.必须要保证调用方法名一致
//修饰符 静态的 返回值 方法名 (参数1,参数2…) {}

public static void aryf1(Random r,int[] ary1) {
for(int i=0;i<=ary1.length-1;i++) {
ary1[i] = r.nextInt(100);//[0,100)
}
System.out.println(Arrays.toString(ary1));
//在此处定义for循环遍历数组并且打印的方法
三.数组实例1—猜字母
1.系统随机生成五个字母
2.用户输入一串字符
3.判定猜对了几个,可以允许重复
分析:
1.系统随机生成5个字母需要一个数组来存放
char[] sys1 = new char[5];
2.通过随机数来实现数组的遍历—>封装成函数
sysRandom(sys1);

public static void sysRandom(char[] sys) {
Random r = new Random();
for(int i=0;i<=sys.length-1;i++) {
sys[i] = (char)(r.nextInt(26)+65);
}
3.用户输入5个字符且需要一个数组来存放
char[] in1 = new char[5];
4.通过用户输入来给in1[]数组遍历赋值—>封装成函数
input(in1);

public static void input(char[] in) {
Scanner sc = new Scanner(System.in);
System.out.println(“请输入您猜的字符串:”);
String s = sc.next();//charAt()…
for(int i=0;i<=in.length-1;i++) {
in[i] = s.charAt(i);
}
sc.close();
}
5.最后的比较判定并且输出结果—>封装成函数
compare(sys1,in1);

public static void compare(char[] sys,char[] in) {
for(int i=0;i<=sys.length-1;i++) {
for(int j=0;j<=in.length-1;j++) {
//系统数字
//用户的数字;
if(sys[i]==in[j]) {
System.out.println(“猜对了:”+sys[i]);
}
}
}
运行结果:

四.数组实例2—双色球
双色球:
红球—[1,33]取6个球
蓝球—[1,16]取1个球
System.out.println(“欢迎来到中国福利彩票开奖中心,本期中奖号码为:”);
//蓝球
Random r = new Random();
int blue = r.nextInt(16)+1;
System.out.println(blue);
//红球
int[] red = new int[6];
//目标球
int[] ball = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,
19,20,21,22,23,24,25,26,27,28,29,30,31,32,33};
//目标球的状态
boolean[] flag = new boolean[ball.length];
//每次循环要找到一个没有被取过的球—>即球的状态为false
//每次循环直到找到一个…才
for(int i=0;i<=red.length-1;i++) {
//先定义下标
int k = 0;
//1.随机一个下标[0,32];
//2.判断下标的状态,如果是false,表示没有被取过,如果为true,表 示此号码已经被取过,继续循环,直到找到一个没有被取过的
do{
k = r.nextInt(33);//[0,32]–>根据下标找到目标球号码以及目标球的状态
}while(flag[k]);
//3.如果跳出循环,表示flag[k] = false,说明此位置没有被取过
//此时获得球,并且需要修改当前的状态
flag[k] = true;
red[i] = ball[k];
}
//扩容前排序
Arrays.sort(red);
//[红球1,红球2,红球3,红球4,红球5,红球6,蓝球]
red = Arrays.copyOf(red,red.length+1);
red[red.length-1] = blue;
System.out.println(“本期中奖号码:”+Arrays.toString(red));
}
}
运行结果:

分析:
1.先通过Random随机数获取中奖的蓝球号码
2.从[1,33]中随机获取5个不重复的红球的号码
首先定义一个红球的数组red[5]
定义一个boolean类型的状态数组flag[32]
此时flag数组的默认值都是flase,即1-33这32个数的状态都是false
然后通过随机数获取5个红球的值,为了保证不重复,每次从[1,33]中获取一个数字,就把这个数字对应的状态改为true
通过do-while循环继续摸球,当随机到状态为true的数字时继续循环获取一个状态是false的值,一直循环5次,5次循环得到的值开始状态都是false,这样就保证不会有重复值
最后通过Arrays.sort(red)和Arrays.copyOf扩容数组打印出结果
#此题比较复杂,需要实际上手代码细细理解,笔者表述能力有限,无法详细的描述出思路#

冷酷小叶的Java学习笔记Day6相关推荐

  1. 冷酷小叶的Java学习笔记Day3

    #Day3# 一.switch-case 1.结构 switch(整数或者字符串) { case 整数1或者字符串1: 执行代码; break; case 整数2或者字符串2: 执行代码; break ...

  2. 冷酷小叶的Java学习笔记Day11

    #Day11# 一.对象数组 1.类比int类型数组: int[] ary = new int[3];//[0,0,0] 2.Person类型的数组 Person p1 = new Person(); ...

  3. java学习笔记11--Annotation

    java学习笔记11--Annotation Annotation:在JDK1.5之后增加的一个新特性,这种特性被称为元数据特性,在JDK1.5之后称为注释,即:使用注释的方式加入一些程序的信息. j ...

  4. java学习笔记13--反射机制与动态代理

    本文地址:http://www.cnblogs.com/archimedes/p/java-study-note13.html,转载请注明源地址. Java的反射机制 在Java运行时环境中,对于任意 ...

  5. 准备写java学习笔记

    准备写java学习笔记 java int 转载于:https://blog.51cto.com/cryingcloud/1975267

  6. Java学习笔记--StringTokenizer的使用

    2019独角兽企业重金招聘Python工程师标准>>> Java Tips: 使用Pattern.split替代String.split String.split方法很常用,用于切割 ...

  7. java学习笔记12--异常处理

    java学习笔记系列: java学习笔记11--集合总结 java学习笔记10--泛型总结 java学习笔记9--内部类总结 java学习笔记8--接口总结 java学习笔记7--抽象类与抽象方法 j ...

  8. Java学习笔记(十)--控制台输入输出

    输入输出 一.控制台输入 在程序运行中要获取用户的输入数据来控制程序,我们要使用到 java.util 包中的 Scanner 类.当然 Java 中还可以使用其他的输入方式,但这里主要讲解 Scan ...

  9. java学习笔记16--I/O流和文件

    本文地址:http://www.cnblogs.com/archimedes/p/java-study-note16.html,转载请注明源地址. IO(Input  Output)流 IO流用来处理 ...

最新文章

  1. mxnet 中的 DepthwiseConv2D API
  2. Windows下solr的安装与部署
  3. Windows与linux双系统安装
  4. DbContext 和ObjectContext两者的区别
  5. python collection 和 heapq 模块使用说明
  6. c语言程序填空z=7,x=4,《C语言程序设计》复习题有答案
  7. AppInventor开发环境搭建
  8. android手机屏幕同步电脑,Android手机如何将屏幕投射到计算机上?
  9. CentOs7中安装python模块psycopg2,报错Error: pg_config executable not found.
  10. 计算机不显示验证码,为什么验证码不显示,验证码显示不出来
  11. 基于web版kettle开发的用户专业版B/S架构工具
  12. 用 BOX-COX 变换进行数据正态性处理
  13. web前端 网页加载 性能优化大全
  14. 全文索引elasticsearch
  15. centos下ftp安装及添加账户
  16. PHP定时执行计划任务
  17. mycat - 解开它神秘的面纱
  18. 按钮置灰后点击事件仍可以触发
  19. jQuery :一个 JavaScript 库
  20. .NET(C#):ToString(CultureInfo.InvariantCulture)

热门文章

  1. openfoam后处理求全床平均孔隙率
  2. 用ORACLE分析函数实现行列转换
  3. 在windows7上搭建STF
  4. 2016年BYOD四大趋势
  5. 软件工程——经验软件工程概述
  6. 自动化立体仓库可以为企业带来什么效益?
  7. 推荐10个值得一听的国外技术播客
  8. matlab simulinK笔记06——代数环
  9. 【JqGrid】jqgrid合并单元格
  10. Python判断股票是交易日,爬虫抓取深交所交易日历