Java实验课的学习笔记(一)数组奇谈与随机数

提要:
本文章讲述java数组的使用,是今天这个实验的经验教训。

数组的定义方式:

像下面这样定义:

int[] arr = new int[3];  
int   arr[] = new int[3];
// 可以拆分 
int[] arr;
arr = new int[3];

这种定义就有些像C语言的标准数组定义了,以前敲C++代码的时候随便惯了,现在正规整这个的话

然后这节就只有数组的这点要谈谈
毕竟if,else,switch,case语句也就这样。

switch case语句:

这个语句我平时用的少,但是今天实验的时候有个朋友也就是用的这个语句,不过他显然不是很懂这个语句,我就单独拎出来,顺便也就复习一下
switch(a){ case:…}语句主要通过a来判断
不过要注意的是在每两个case中间根据实际情况需要一个break,将两个case的行为隔开~

	   int a =1;
	   Scanner sc = new Scanner(System.in);
       a=sc.nextInt();//输入语句
       switch (a){//这里面的a就是判断条件
           case 1:
               System.out.println("1");
               break;
           case 2:
               System.out.println("2");
               break;
           case 3:
               System.out.println("3");
               break;
       }

字符为判断条件就是这样的:

	   char b;
       b=sc.next().charAt(0);
       switch(b){
           case 'A':
               System.out.println("A");
               break;
           case 'B':
               System.out.println("B");
               break;
           case 'C':
               System.out.println("C");
               break;
           case 'D':
               System.out.println("D");
               break;
           
       }

随机数生成

问问我的好老师捏

1使用Math.random()方法生成[0,1)之间的随机数,需要将其乘以一个数并强制转换为整型,才能得到指定范围内的随机数:

int num = (int) (Math.random() * range) + min;

其中,range为随机数的范围,min为随机数的最小值。

2使用Random类生成随机数,需要创建Random对象,并调用相应的方法:

Random random = new Random();
int num = random.nextInt(range) + min;

其中,range为随机数的范围,min为随机数的最小值。可以使用nextInt()方法生成指定范围内的随机整数,也可以使用nextDouble()方法生成[0,1)之间的随机浮点数

3使用ThreadLocalRandom类生成随机数,该类是Random类的增强版,可以更快地生成随机数:

int num = ThreadLocalRandom.current().nextInt(min, max + 1);

其中,min为随机数的最小值,max为随机数的最大值。
4使用SecureRandom类生成安全的随机数,该类可以生成加密强度的随机数,适用于安全性要求较高的场合:

SecureRandom random = new SecureRandom();
byte[] bytes = new byte[16];
random.nextBytes(bytes);

其中,bytes为生成的随机字节数组。

需要注意的是,在生成随机数时需要考虑到随机数的范围、是否允许重复、是否需要安全等因素。根据需要选择合适的生成随机数的方式。

生成不重复的随机数

1使用Set集合保存已经生成的随机数,每次生成随机数前判断是否在Set集合中出现过,如果出现过则重新生成,直到生成一个未出现过的随机数:

Set<Integer> set = new HashSet<>();
Random random = new Random();
int min = 1;
int max = 10;
while (set.size() < 10) {
    int num = random.nextInt(max - min + 1) + min;
    if (!set.contains(num)) {
        set.add(num);
    }
}
System.out.println(set);

2使用Collections工具类的shuffle方法打乱一个数组,然后取前面的元素作为不重复的随机数:

List<Integer> list = new ArrayList<>();
for (int i = 1; i <= 10; i++) {
    list.add(i);
}
Collections.shuffle(list);
List<Integer> result = list.subList(0, 10);
System.out.println(result);

这种方法可以保证生成的随机数的顺序是随机的。

今天的卡牌大师题:

Java实验课的学习笔记(一)数组奇谈与随机数_第1张图片

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class Work1 {
    public static void main(String[] args){


        String[] array = new String[10];
        for(int i=0;i<10;i++){
            array[i]=("卡牌"+(i+1));
        }//卡牌数组初始化

        List<Integer> list = new ArrayList<>();
        for (int i = 1; i <= 10; i++) {
            list.add(i);
        }
        Collections.shuffle(list);
//        List result = list.subList(0, 10);
//        System.out.println(result);
		//随机数生成

        for(int i:list){
            System.out.println(array[i-1]);
        }//遍历输出结果

    }
}

说在后面:

java其实和c++的基本部分也算是大差不差的了,但是其中一些细节问题不容忽略,也正是这些细节问题有些大脑壳

你可能感兴趣的:(Java实验课总结,java,学习,数据结构)