提要:
本文章讲述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);
这种方法可以保证生成的随机数的顺序是随机的。
今天的卡牌大师题:
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<Integer> result = list.subList(0, 10);
// System.out.println(result);
//随机数生成
for(int i:list){
System.out.println(array[i-1]);
}//遍历输出结果
}
}
说在后面:
java其实和c++的基本部分也算是大差不差的了,但是其中一些细节问题不容忽略,也正是这些细节问题有些大脑壳