|
@@ -0,0 +1,262 @@
|
|
|
+package com.sf.day05;
|
|
|
+
|
|
|
+import org.junit.Test;
|
|
|
+import java.util.*;
|
|
|
+import java.util.Scanner;
|
|
|
+
|
|
|
+public class Te {
|
|
|
+ @Test
|
|
|
+ public void t1(){
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 二维数组的定义
|
|
|
+ *
|
|
|
+ * 动态:
|
|
|
+ * int[] arr = new int[n];
|
|
|
+ * int[][] arr = new int[m][n];
|
|
|
+ * m:代表的是二维数组的长度
|
|
|
+ * n:代表的是二维数组里一维数组的长度
|
|
|
+ *
|
|
|
+ * int[][] arr = new int[3][2];
|
|
|
+ * [ [1,2] , [1,1] ,[1,9 ] ] 9 : arr[2][1]
|
|
|
+ */
|
|
|
+ int[][] arr ;
|
|
|
+ int arr1[][];
|
|
|
+ int[] arr2[];
|
|
|
+
|
|
|
+ int[] arr3 = new int[]{};
|
|
|
+ String[][] grade = new String[][]{
|
|
|
+ {"小舞","唐三","胖子"},{"戴沐白","朱竹清"},{"唐晨","唐浩","唐四","唐五"}
|
|
|
+ };
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 商城,
|
|
|
+ * 第一季度 每一个月的销售额 分别是 12,14,24,
|
|
|
+ * 第二季度 每一个月的销售额 分别是 23,18,35,
|
|
|
+ * 第三季度 每一个月的销售额 分别是 33,48,25,
|
|
|
+ * 第四季度 每一个月的销售额 分别是 27,28,35,
|
|
|
+ * 二维数组实现
|
|
|
+ * 求出 每个月的平均销售额,和总销售额。
|
|
|
+ */
|
|
|
+ @Test
|
|
|
+ public void t2(){
|
|
|
+ int[][] arr = {{12,14,24},{23,18,35},{33,48,25},{27,28,35}};
|
|
|
+ double sum = 0.0; //总销售额
|
|
|
+ int count = 0;
|
|
|
+ for (int i = 0;i<arr.length;i++){
|
|
|
+ for (int j = 0;j<arr[i].length;j++){
|
|
|
+ sum += arr[i][j];
|
|
|
+ count++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ System.out.println("总销售额"+sum);
|
|
|
+ System.out.println("平均销售额"+sum/count);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 判断一个数组是否为平衡数组
|
|
|
+ */
|
|
|
+ @Test
|
|
|
+ public void t3(){
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public boolean isPHArray(int[] arr){
|
|
|
+ for (int i = 0,j = arr.length-1;i<j;i++,j--){
|
|
|
+ if(arr[i] != arr[j]){
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ //8、求数组中元素的最短距离 5、找数组平衡数
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 二分查找
|
|
|
+ */
|
|
|
+ @Test
|
|
|
+ public void t4(){
|
|
|
+ int[] arr = {-23,9,10,34,56,234,567};
|
|
|
+ int head = 0,end = arr.length-1;
|
|
|
+ int value = 2341;
|
|
|
+ boolean flag = true;
|
|
|
+ while (head <= end){
|
|
|
+ int mid = (head+end)/2;
|
|
|
+ if(value == arr[mid]){
|
|
|
+ System.out.println("中间值"+arr[mid]);
|
|
|
+ flag = false;
|
|
|
+ break;
|
|
|
+ }else if (value < arr[mid]){
|
|
|
+ end = mid-1;
|
|
|
+ }else {
|
|
|
+ head = mid+1;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(flag){
|
|
|
+ System.out.println("no~");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 冒泡排序
|
|
|
+ */
|
|
|
+ @Test
|
|
|
+ public void t5(){
|
|
|
+ int[] arr = {23,9,10,34,56,234,567};
|
|
|
+ // 不用讲
|
|
|
+
|
|
|
+ System.out.println(Arrays.toString(arr));
|
|
|
+// System.out.println(Arrays.sort(arr,1,2));
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ // 已知某个数组中只有1个数字的次数出现奇数次,请找出这个数字。
|
|
|
+ @Test
|
|
|
+ public void t6(){
|
|
|
+ int[] arr = {2,2,5,7,7};
|
|
|
+ int value = arr[0];
|
|
|
+ for (int i = 1;i<arr.length;i++){
|
|
|
+ value ^= arr[i];
|
|
|
+ }
|
|
|
+
|
|
|
+ System.out.println(value);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 公司年会有一个寻找锦鲤的游戏,
|
|
|
+ * 每一个员工随意写一个字,
|
|
|
+ * 如果在“锦鲤”词库中有这个字,
|
|
|
+ * 那么就奖励500元锦鲤红包,否则就没有,每人只能玩一次。
|
|
|
+ */
|
|
|
+ public static void main(String[] args) {
|
|
|
+ char[] koiFishWords = {'一','今','地','定','爱','年','开','我','果','火','爱','扣','结','花','钉','遍'};
|
|
|
+ Scanner sc = new Scanner(System.in);
|
|
|
+ char next = sc.next().charAt(0);
|
|
|
+ for (char koiFishWord : koiFishWords) {
|
|
|
+ if(koiFishWord == next){
|
|
|
+ System.out.println("500");
|
|
|
+ break;
|
|
|
+ }else {
|
|
|
+ System.out.println("no");
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ //mm 模拟大乐透
|
|
|
+
|
|
|
+ /**
|
|
|
+ * ## 2、模拟大乐透
|
|
|
+ *
|
|
|
+ * 大乐透(前区“35选5”+后区“12选2”),即前区在1-35之间的号码中随机选取5个,后区在1-12之间的号码中随机选取2个,组成一期的中奖号码,请用程序模拟产生一组大乐透中奖号码。
|
|
|
+ *
|
|
|
+ * 开发提示:
|
|
|
+ *
|
|
|
+ * - 声明一个int类型的数组front,长度为35,默认值都是0;
|
|
|
+ * - 声明一个int类型的数组after,长度为12,默认值都是0;
|
|
|
+ * - 随机产生[0,35)之间的整数。如果随机产生的是0,那么就把front[0]修改为1,如果随机产生的是5,那么就把front[5]修改为1,如果随机产生的是10,就把front[10]修改为1。但是如果本次随机产生的是5,而front[5]已经是1了,那么需要重新随机产生一个整数。用这种方式把front数组的5个元素修改为1。
|
|
|
+ * - 随机产生[0,12)之间的整数。使用同样的方式,把after数组的2个元素修改为1。
|
|
|
+ * - 遍历front和after数组,输出大乐透中奖号码,判断front和after数组元素是否为1,如果为1,就显示它的下标+1值。
|
|
|
+ */
|
|
|
+
|
|
|
+@Test
|
|
|
+public void t16(){
|
|
|
+ int[] front = new int[35];
|
|
|
+ int[] after = new int[12];
|
|
|
+
|
|
|
+ for (int i =1;i<6;i++){
|
|
|
+ int n = (int) (Math.random()*35);
|
|
|
+ if(front[n] == 0){
|
|
|
+ front[n] =1;
|
|
|
+ }else {
|
|
|
+ i--;
|
|
|
+ }
|
|
|
+// System.out.println(Arrays.toString(front));
|
|
|
+ }
|
|
|
+
|
|
|
+// System.out.println(Arrays.toString(front));
|
|
|
+
|
|
|
+ for (int i =1;i<3;i++){
|
|
|
+ int n = (int) (Math.random()*12);
|
|
|
+ if(after[n] == 0){
|
|
|
+ after[n] =1;
|
|
|
+ }else {
|
|
|
+ i--;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ for (int i =0;i<35;i++){
|
|
|
+ if(front[i] == 1){
|
|
|
+ System.out.println(i+1);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ for (int i =0;i<12;i++){
|
|
|
+ if(after[i] == 1){
|
|
|
+ System.out.println(i+1);
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 7、查找数组中个数过半的数字
|
|
|
+ */
|
|
|
+ @Test
|
|
|
+public void t7(){
|
|
|
+ int[] arr = {1, 2, 3, 2, 2, 2, 5, 4, 2};
|
|
|
+ Arrays.sort(arr);
|
|
|
+ int mid = arr.length/2;
|
|
|
+ System.out.println(arr[mid]);
|
|
|
+ int count = 0;
|
|
|
+ for (int i : arr) {
|
|
|
+ if(i == arr[mid]){
|
|
|
+ count++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ System.out.println(count);
|
|
|
+}
|
|
|
+
|
|
|
+// //8、求数组中元素的最短距离
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 随机产生10个[0,100)之间整数存储到数组中,找出数组中的两个元素x和y,使得(x - y)绝对值最小。
|
|
|
+ *
|
|
|
+ * 开发提示:
|
|
|
+ *
|
|
|
+ * - 将数组进行排序
|
|
|
+ * - 求相邻元素的差,差值最小值就是最短距离
|
|
|
+ */
|
|
|
+ @Test
|
|
|
+ public void t8(){
|
|
|
+ int[] arr = new int[10];
|
|
|
+ for (int i = 0;i<10;i++){
|
|
|
+ arr[i] = (int)(Math.random()*100);
|
|
|
+ }
|
|
|
+ Arrays.sort(arr);
|
|
|
+ System.out.println(Arrays.toString(arr));
|
|
|
+ int min = arr[1] - arr[0];
|
|
|
+ int index1 = arr[0];
|
|
|
+ int index2 = arr[1];
|
|
|
+ for (int i = 0;i<9;i++){
|
|
|
+ int dis = arr[i+1] - arr[i];
|
|
|
+ if(dis <= min){
|
|
|
+ min = dis;
|
|
|
+ index1 = i;
|
|
|
+ index2 = i+1;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ System.out.println(min);
|
|
|
+ System.out.println(arr[index1]);
|
|
|
+ System.out.println(arr[index2]);
|
|
|
+ }
|
|
|
+}
|