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

Posted 泉绮

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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);

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

今天的卡牌大师题:

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++的基本部分也算是大差不差的了,但是其中一些细节问题不容忽略,也正是这些细节问题有些大脑壳

Java学习笔记2(输入与随机数简单介绍)

输入:

import java.util.Scanner;

public class ScannerDemo{

  public static void main(String[ ] args){
  Scanner sc = new Scanner(System.in);
  int i = sc.nextInt();
  System.out.println(i+1);
  String s = sc.next();
  System.out.println(s+1);
  }
}

技术分享图片

输入1,输出2,再输入1,输入11

 

 

随机数:

import java.util.Random;
public class RandomDemo{
  public static void main(String[ ] args){
  Random ran = new Random();
  //0 - 49的随机数
  int i = ran.nextInt(50);
  System.out.println(i);
  //0.0 - 1.0的随机小数
  double d = ran.nextDouble();
  System.out.println(d);
  }
}

技术分享图片

 

如果想输出1-50的随机数,只需要i+1就可以了。

 

这里简要地介绍下java地数据类型:

public class Variable{
  public static void main(String[] args){
  byte b = 100;
  System.out.println(b);
  short s = 200;
  System.out.println(s);
  int i = 10000;
  System.out .println(i);
  long l = 100000000000L;
  System.out.println(l);
  float f = 3.14F;
  System.out.println(f);
  double d = 3.14;
  System.out.println(d);
  char c = ‘我‘;
  System.out.println(c);
  boolean bool = true;
  System.out.println(bool);
  }
}

技术分享图片

 

 

java中的类型强制转换与c中的一样,不必多做介绍。

 






































以上是关于Java实验课的学习笔记数组奇谈与随机数的主要内容,如果未能解决你的问题,请参考以下文章

Java开发中遇到最难的问题!java使用随机数初始化数组

《JAVA编程思想》学习笔记——第十六章 数组

Java:Effective java学习笔记之 列表优先于数组

Java学习笔记-数组

Java学习笔记(for-each循环与数组的拷贝)

从零学Java(28)之数组的定义与使用