一、今日学习
1.Java工具类中算法的实现
在Java的java.util包下有一个类:Arrays,该类提供诸多方法,如打印数组、排序和二分查找等。该工具类的使用操作:
(1)导入java.util下的包中的类——import java.util.Arrays
(2)调用相应的API——Arrays.方法名()
1.1 使用工具类打印数组——toString方法
1 import java.util.Arrays; 2 public class study{ 3 public static void main(String[] args) { 4 int[] a= {2,3,4,5,9,7,8}; 5 System.out.println(Arrays.toString(a)); 6 } 7 }
1.2 使用工具类排序——sort方法 //Arrays.sort(数组) 默认为从小到大排序
1 import java.util.Arrays; 2 public class study{ 3 public static void main(String[] args) { 4 int[] a= {2,3,4,5,9,7,8}; 5 Arrays.sort(a); 6 System.out.println(Arrays.toString(a)); 7 } 8 }
1.3 使用工具类进行二分查找——binarySearch(int[] args,int key)方法 //在此之前需要通过sort(int [])方法进行排序;若数组包含多个带指定值的元素,则无法保证找到哪个
1 import java.util.Arrays; 2 public class study{ 3 public static void main(String[] args) { 4 int[] a= {2,3,4,5,9,7,8}; 5 //排序 6 Arrays.sort(a); 7 //二分查找,返回下标值 8 int index=Arrays.binarySearch(a, 3); 9 System.out.println("下标在:"+index+"位置"); 10 } 11 }
1.4 Random工具类可以生成随机数
Random工具类的nextInt(int num)方法可以生成随机数0~num,但不包含num
1 import java.util.Random; 2 public class study{ 3 public static void main(String[] args) { 4 //随机生成0~10000,单数不包含10000的整数 5 Random ran=new Random(); 6 int a=ran.nextInt(10000); 7 System.out.println("a="+a); 8 } 9 }
2.综合实例
模拟随机组合双色球,红色球号码有6个,从1~33号数字中随机抽取,不可重复;蓝色球号码有1个,从1~16号数字中随机抽取,组合得到双色球号码
1 import java.util.Arrays; 2 import java.util.Random; 3 public class study{ 4 public static void main(String[] args) { 5 //存放1~33号数组 6 String[] pool= {"01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16","17","18","19","20","21","22","22","23","24","25","26","27","28","29","30","31","32","33"}; 7 //存放1~33数字是否使用过 8 boolean[] used=new boolean[pool.length]; 9 ///存放双色球 10 String[] balls=new String[6]; 11 Random random=new Random(); 12 int i; 13 int index=0; 14 while(true) { 15 //随机生成数组下标 16 i=random.nextInt(pool.length); 17 if(used[i]) { 18 continue; //返回,重新开始循环 19 } 20 balls[index++]=pool[i]; 21 used[i]=true; //标志使用过了 22 if(index==balls.length) { //检查是否满了 23 break; //结束循环 24 } 25 } 26 Arrays.sort(balls); 27 //对数组进行扩容 28 String[] newBalls=new String[7]; 29 for(int m=0;m<balls.length;m++) { 30 newBalls[m]=balls[m]; 31 } 32 newBalls[newBalls.length-1]=pool[random.nextInt(16)]; 33 //打印随机生成的双色球 34 System.out.println("双色球:"+Arrays.toString(newBalls)); 35 } 36 }
3.练习
3.1 使用冒泡排序、插入排序、选择排序对[1,5,6,9,8,2,3]进行从小到大排序
- 冒泡排序
- 插入排序
- 选择排序
3.2 使用工具类随机生成5位数字,并用工具类对这5位数进行排序
3.3 自定义一个方法,当用户输入两个随机数,判断最大值
二、遇到问题
在Java中怎样实现从用户端输入,查阅后发现Java中Scanner工具类来获取用户输入的信息
(1)导入java.util.Scanner
import java.util.Scanner;
(2)创建Scanner对象
Scanner input=new Scanner(System.in);
(3)接受并保存用户输入的值
1 char a=input.nextLine(); //获取字符串 2 double a=input.nextDouble(); //获取double型数据 3 int a=input.nextInt(); //获取int型数据
三、明日学习
复习并且用java语句完成c++例题