Explorar el Código

0108 复习 and git

Qing hace 1 año
padre
commit
5b1fcb4f42

+ 100 - 0
git-demo/com/sf/Test.java

@@ -0,0 +1,100 @@
+package com.sf;
+
+import java.util.Arrays;
+import java.util.Random;
+import java.util.Scanner;
+
+public class Test {
+
+    public static void main(String[] args) {
+        // 随机点名器
+        //      txt文档中
+        //  字符串中 “zhangsan、lisi、wangwu”
+        //  输入一个要随机的数量   1 2
+        //    随机出可能重复的同学名字
+        //    随机出不重复的同学名字
+
+
+        String str = "赵玉龙、闵圣楠、刘哲、李龚臻、张嫁祥、尹星博、李宏源、牛文睿、王佳强、胡春宇、郭柯雨、唐振亮、王鸿明、芦博智、张文瀚、张甫鑫、张宇璇、李小龙、王毅、孙智凡、孙超、殷碧泉、李斯扬、赵佳硕、杨晨、康雯博、孙辉、李天卓、牛世恒、卢星宇、黄天柯";
+        String[] splitStr = str.split("、");
+        System.out.println(splitStr.length);
+//        System.out.println(Arrays.toString(splitStr));
+
+        // 输入一个数字  来获取随机的数量
+        System.out.println("请输出一个要随机的数量:");
+        Scanner scanner = new Scanner(System.in);
+        int num = scanner.nextInt();
+
+        // 有效范围 [1,length]
+        //   小于最小值  大于最大值
+        //   重新输入  按照最小值和最大值处理
+        if (num < 1) num = 1;
+        else if (num > splitStr.length) num = splitStr.length;
+        else if (num == splitStr.length) System.out.println(Arrays.toString(splitStr));
+//        while (num < 1 || num > splitStr.length){
+//            System.out.println("输入数值不符合范围, 请重新输入:");
+//            num = scanner.nextInt();
+//        }
+
+        // 随机num个不重复的结果
+        // 存储结果的容器: 数组、list、set
+        //  set 用法最简单  随机的范围要在length中  随机的结果存在set中  循环遍历条件要判断set的大小
+        //  list  用法相对简单  也比较多样
+        //        contains()进行去重  循环遍历条件要判断list的大小
+        //        随机一个移除一个  使用的是动态数组的特性
+        //        Collections.shuffle()洗牌方法
+        //  数组   随机一个向前覆盖  而且用了 Math.random()随机   其他Random.nextInt()
+
+        // num = 5  随机的是索引 [0,30] 随机出5个不重复的
+        //  arr = {0,0,0,0,0}  数组初始化的默认值  但是随机结果也有可能是0
+        //  arr = {-1,-1,-1,-1,-1}
+        //  arr = {2,-1,-1,-1,-1}
+        //  arr = {2,3,-1,-1,-1}
+        //  arr = {2,3,7,-1,-1}   有效元素的个数 size  数组中是否存在 contains  ArrayList的本质是动态数组
+
+        int len = splitStr.length;
+        int[] arr = new int[num];
+        // 直接输出的是地址
+        System.out.println(arr);
+        System.out.println(Arrays.toString(arr));
+        // itar  iter 循环的快捷键
+        for (int i = 0; i < num; i++) {
+            arr[i] = -1;
+        }
+        System.out.println(Arrays.toString(arr));
+
+        // 记录有效元素的个数
+        int count = 0;
+        // 随机两种逻辑
+        // 去重
+        while (count < num) {
+//            Random random = new Random();
+//            int randomInt = random.nextInt(len);
+//            System.out.println(randomInt);
+
+            int mathRandom = (int)(Math.random() * len);
+            System.out.println(mathRandom);
+            // 判断是否在arr中存在
+            // 不存在 才赋值 并添加count
+            boolean isExists = false;
+            for (int i = 0; i < num; i++) {
+                if(arr[i] == mathRandom){
+                    isExists = true;
+                    break;
+                }
+            }
+            if (!isExists){
+                // 第一个元素  arr = {-1,-1,-1,-1,-1}
+                // count = 0
+                // 第二个元素  arr = {2,-1,-1,-1,-1}
+                // count = 1
+                // 类似于set
+                arr[count] = mathRandom;
+                count++;
+            }
+        }
+
+        System.out.println(Arrays.toString(arr));
+
+    }
+}

+ 45 - 0
git-demo/com/sf/TestStudent.java

@@ -0,0 +1,45 @@
+package com.sf;
+
+import java.util.Arrays;
+import java.util.Random;
+import java.util.Scanner;
+
+
+public class TestStudent {
+
+
+    public static void main(String[] args) {
+
+        String str = "赵玉龙、闵圣楠、刘哲、李龚臻、张嫁祥、尹星博、李宏源、牛文睿、王佳强、胡春宇、郭柯雨、唐振亮、王鸿明、芦博智、张文瀚、张甫鑫、张宇璇、李小龙、王毅、孙智凡、孙超、殷碧泉、李斯扬、赵佳硕、杨晨、康雯博、孙辉、李天卓、卢星宇、黄天柯";
+        String[] split = str.split("、");
+        //展示已有名字库
+        System.out.println(Arrays.toString(split));
+        int[] arr = new int[split.length];
+
+        Scanner scanner = new Scanner(System.in);
+        int n = scanner.nextInt();
+
+
+        for (int i = 0; i < arr.length; i++) {
+            arr[i] = -1;
+        }
+
+        for (int i = 0; i < n; i++) {
+
+            //进行随机一次点名
+            int num = (int) (Math.random() * split.length);
+            if (arr[i] == -1) {
+                arr[i] = num;
+            } else {
+                break;
+            }
+        }
+
+        for (int i = 0; i < n; i++) {
+            System.out.println(split[arr[i]]);
+        }
+
+
+    }
+}
+

+ 37 - 0
git-demo/com/sf/TestTang.java

@@ -0,0 +1,37 @@
+package com.sf;
+
+import java.util.Random;
+import java.util.Scanner;
+
+/*
+@Author 唐振亮
+@Create 2024/1/8  9:56
+@Name test01
+*/
+public class TestTang {
+    public static void main(String[] args) {
+        Scanner scanner = new Scanner(System.in);
+        System.out.print("请输入随机数量:");
+        int count = scanner.nextInt();
+        String str = "赵玉龙、闵圣楠、刘哲、李龚臻、张嫁祥、尹星博、李宏源、牛文睿、王佳强、胡春宇、郭柯雨、王鸿明、芦博智、张文瀚、张甫鑫、张宇璇、李小龙、王毅、孙智凡、孙超、殷碧泉、李斯扬、赵佳硕、杨晨、康雯博、孙辉、李天卓、卢星宇、黄天柯";
+
+        // 转数组
+        String[] names = str.split("、");
+
+        // 打乱姓名顺序
+        Random random = new Random();
+        for (int i = 0; i < count; i++) {
+            int j = random.nextInt(names.length);
+            String temp = names[i];
+            names[i] = names[j];
+            names[j] = temp;
+        }
+
+        // 输出不重复的名字
+        System.out.println("随机点名结果:");
+        for (int i = 0; i < count && i < names.length; i++) {
+            System.out.println(names[i]);
+        }
+    }
+
+}

+ 26 - 0
git-demo/com/sf/TestWang.java

@@ -0,0 +1,26 @@
+package com.sf;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Random;
+import java.util.Scanner;
+
+
+public class TestWang {
+
+    public static void main(String[] args) {
+        Scanner random = new Scanner(System.in);
+        int number_of_students = random.nextInt(10);
+        String[] student_names = {"小明", "小红", "小刚", "小李", "小张", "小哈", "小小", "小困", "小顾"};
+        // 如何把数组转化成list
+        Collections.shuffle(Arrays.asList(student_names));
+        // shuffle 洗牌
+        // {1,2,3,4,5}
+        // {3,5,1,4,2}
+        // 取两个
+        // {3,5}
+        for (int i = 0; i < number_of_students; i++) {
+            System.out.println(student_names[i]);
+        }
+    }
+}

+ 39 - 0
git-demo/com/sf/TestZhang.java

@@ -0,0 +1,39 @@
+package com.sf;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Random;
+import java.util.Scanner;
+
+public class TestZhang {
+
+    public static void main(String[] args) {
+        String names = "zs,ls,ww,tom,jack,hall,tim,boy";
+        String[] nameSplit = names.split(",");
+        int[] arr = new int[nameSplit.length];
+
+        for (int i = 0; i < arr.length; i++) {
+            arr[i] = -1;
+        }
+        Scanner scanner = new Scanner(System.in);
+        System.out.println("输入个数");
+        int count = scanner.nextInt();
+//        List list = new ArrayList();
+        Random random = new Random();
+        int times = 0;
+        while (times < count) {
+            int num = random.nextInt(nameSplit.length);
+            if (arr[num] == -1) {
+//                list.add(num);
+                arr[num] = num;
+                times++;
+            }
+        }
+
+//
+//        for (Object o : list) {
+//            System.out.println(o);
+//        }
+
+    }
+}