Java知识点3

Java知识点3

Java中的随机函数有两种:
1,java.lang.Math.random():Math.random()方法中返回一个0–1之间的随机double型数据
2,java.until.Random() 构造一个无参的随机数生成器,使用系统时间的毫秒为
默认的种子,其方法有
1,boolean nextBoolean():Random.nextBoolean()返回下一个伪随机数,它取自随机数生成
器序列均匀分布的boolean值
2,double nextDouble():Random.nextDouble()返回下一个伪随机数,它取自随机数生成器序列,在0–1之间
均匀分布的double值
3,float nextFloat():Random.nextFloat()返回下一个伪随机数,它取自随机数生成器序列,在0–1之间
均匀分布的float值
4,int nextInt():Random.nextInt()返回下一个伪随机数,它取自随机数生成器序列均匀分布的int值
5,long nextLong():Random.nextLong()返回下一个伪随机数,它取自随机数生成器序列均匀分布的long值

arraycopy方法可以实现一个数组的指定元素复制到另一个数组中
例如:arraycopy(array1,0,array2,0,10)的意思是:将数组array1数组里从索引为0的元素开始,复制到数组array2里索引为0的位置,复制的元素个数为10

声明一个数组,并把数组中重复的元素删除,然后将数组按照一定顺序排列

方法一:

package Test;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Random;
import java.util.Set;
//首先,声明一个数组,并把数组中重复的元素删除,然后将数组按照一定顺序排列
public class Test6 {
  public static void main(String[] args) {
   Random random=new Random();         //实例化随机数对象
   int []array=new int[20];            
   for(int i=0;i<array.length;i++) {   
    array[i]=random.nextInt(30);    //创建一个长度为20的,且值为0-30之间的随机数组
   }
   Arrays.sort(array);                 //对数组进行升序排列
   System.out.println("原先的序列为:");
   for(int i=0;i<array.length;i++) {
    System.out.print(array[i]+" ");
    if((i+1)%5==0) {
     System.out.println();
    }
   }
   Object[] array1=unique(array);       //调用unique函数去掉重复数字
   System.out.println("去掉重复的数字,还剩有"+array1.length+"个数字,它们的值分别是:");
   for(int i=0;i<array1.length;i++) {
    System.out.print(array1[i]+" ");
    if((i+1)%5==0) {
     System.out.println();
    }
   }
}
  public static Object[] unique(int[] array) {
   //利用set集合无序不可重复的特性进行元素过滤
   Set set =new HashSet();              //实例化一个set集合
   for(int i=0;i<array.length;i++) {
    set.add(array[i]);               //遍历数组并存入集合,如果元素已存在则不会重复存入
   }
   return set.toArray();                //返回set集合的数组形式
  }
 }

方法二:

package Test;
import java.util.Arrays;
import java.util.Random;
//首先,声明一个数组,并把数组中重复的元素删除,然后将数组按照一定顺序排列
public class Test8 {
  public static void main(String[] args) {
   Random random=new Random();         //实例化随机数对象
   Object []array=new Object[20];      
   //因为每个java类都是由object扩展而来的,因此所有的类都属于object类型,所以可以创建object类型的数组存储任何类型的变量
   for(int i=0;i<array.length;i++) {   
    array[i]=random.nextInt(30);    //创建一个长度为20的,且值为0-30之间的随机数组
   }
   System.out.println("未排序的序列为:");
   printf(array);
   Arrays.sort(array);                 //对数组进行升序排列
   System.out.println("排序后的序列为:");
   printf(array);                      //调用打印输出函数
   Object[] array1=ifRepate(array);    //调用ifRepate函数去掉重复数字
   System.out.println("去掉重复的数字,还剩有"+array1.length+"个数字,它们的值分别是:");
   printf(array1);
}
public static void printf(Object[] array) {
   for(int i=0;i<array.length;i++) {
    System.out.print(array[i]+" ");
    if((i+1)%5==0) {               //使其保持一行总是有五个元素
     System.out.println();
    }
   }
}
public static Object[] ifRepate(Object[] array) {
 //需要传入一个object数组,然后返回一个去重后的数组
  int t=0;     //用来记录去除重复之后的数组长度和给临时数组作为下标索引
  Object[] temp=new Object[array.length]; //创建一个临时数组,长度和原来确定的一致
  for(int i=0;i<array.length;i++) {
   boolean isTrue=true; //声明一个标记变量
   for(int j=i+1;j<array.length;j++) {
    if(array[i]==array[j]) {
     isTrue=false; //在逐次比较元素大小是否相等时,若相等,则标记变量重置
     break;
    }
   }
   if(isTrue) {  //没有重复元素
    temp[t]=array[i];
    t++;
   }
  }
  Object[] newarray=new Object[t];   //声明一个新数组,该数组为去重后的数组
  //使用arraycopy的方法将刚刚去重的数组拷贝到新的数组中
  System.arraycopy(temp,0,newarray,0,t);
  return newarray;  
  }
  }

结果:

未排序的序列为:
28 12 3 13 29 
24 5 24 20 10 
2 11 22 19 26 
16 26 27 3 7 
排序后的序列为:
2 3 3 5 7 
10 11 12 13 16 
19 20 22 24 24 
26 26 27 28 29 
去掉重复的数字,还剩有17个数字,它们的值分别是:
2 3 5 7 10 
11 12 13 16 19 
20 22 24 26 27 
28 29 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值