0
点赞
收藏
分享

微信扫一扫

JAVA学习DAY3-实例操作

千行 2022-02-23 阅读 51

JAVA学习之实践一

寻找素数的方法

  • 首先要明白什么是素数:除了1和它本身,不能被整除的数!
    明白了这一点后,我们就有思路了,比如一个数101,我是不是要让他与2开始比较直到100即可,看它整除的结果是否为0,IF(101%i == 0)那么我们就直接break,说明此数不是素数,我们继续下一个102…以此类推,因此我们只用到了所学的两种方法,一个是FOR,一个是IF。
public class DAY3_AnLi {
    public static void main(String[] args) {
        /*找素数:最重要的是知道什么是素数,除了一和它本身外能被整除的数称为素数,所以我们只要判断它与这些数相除能否为0,
        * 如果为0,直接跳出循环,说明此数不是素数,
        * 如果不为0,循环完之后,通过条件必大小来输出此素数。
        * */
        System.out.println("素数有:");
        int i,k;
        for (i = 101; i < 201; i++) {
            for (k = 2; k < i; k++) {
                if (i % k == 0) {
                    break;
                }
            }
            if (k == i) {
                System.out.print(i + "\t");
            }
        }
    }
}

ASCII码的应用,大小写,数字转字符

  • 验证码系统,是我在今天学的一个用到了标题技术的例子,下面我分析一下这个具体是怎么使用的,思想是什么。
  • 比如我想要生成一个5位的验证码,为了代码的可扩展性,我写了一个方法,用来传入你想生成几位的验证码,传数字即可。
  • 具体验证码是怎么生成的,其实我认为有以下几点:
  • 明白了以上原理后,我们只需要把生成的字符或者数字放到一起(即在循环外面定义一个空的字符串类型的变量,每次生成的字符串加里面即可生成验证码)在Return即可。
   //    调用验证码程序
        System.out.println("请输入您想生成的验证码位数:");
        Scanner scan = new Scanner(System.in);
        int num = scan.nextInt();
        System.out.println(NumMa(num));
    /*生成验证码*/
    public static String NumMa(int num) {
        String code = "";
        Random s = new Random();
        for (int i = 0; i < num; i++) {

            int type = s.nextInt(3);
            switch (type) {
                case 0:
                    //数字
                    code += s.nextInt(10);
                    break;
                case 1:
                    //大写字母
                    char c = (char) (s.nextInt(26) + 65);
                    code += c;
                    break;
                case 2:
                    //小写字母
                    char c1 = (char) (s.nextInt(26) + 97);
                    code += c1;
                    break;
            }
        }
        return code;
    }

数组的复制

    //    调用复制数组程序
        int old[] = {20, 30, 40};
        int[] newSuzhu=new int[old.length];
        copy1(old,newSuzhu);
    /*数组的复制*/
    public static void copy1(int[] old, int[] newSuzhu) {
        System.out.print("原数组为:");
        for (int i = 0; i < old.length; i++) {
            newSuzhu[i] = old[i];
            System.out.print(old[i]+"\t");
        }
        System.out.print("复制后的数组为:");
        for(int i=0;i<newSuzhu.length;i++){
            System.out.print(newSuzhu[i]+"\t");
        }
    }

重温数组排序-冒泡排序法

for (int i = 0; i < score.length; i++) {
            for (int k = i + 1; k < score.length; k++) {
                if (score[i] > score[k]) {
                    int temp = score[i];
                    score[i] = score[k];
                    score[k] = temp;
                }
            }

数组之最值,平均值

 	int score[] = {20, 30, 40};
        //    找出数组中的最高分,最低分,求平均分
        Score(score);
	public static void Score(int[] score) {
        //10 20 5 40 50 60 6个评委
        int sum = 0;
        for (int i = 0; i < score.length; i++) {
            for (int k = i + 1; k < score.length; k++) {
                if (score[i] > score[k]) {
                    int temp = score[i];
                    score[i] = score[k];
                    score[k] = temp;
                }
            }
            sum += score[i];
        }
        System.out.println("\n");
        System.out.println("最低分为:" + score[0] + "最高分为:" + score[score.length - 1] + "平均分为:" + (double)((sum - score[0] - score[score.length - 1]) / (score.length - 2) ));
    }
  • 另外一种求最值的方法
    for (int x = 0; x < score.length; x++) { // 循环求岀最大和最小 if (score[x] > max) { // 依次判断后续元素是否比max大 max = score[x]; // 如果大则修改max内容 } if (score[x] < min) { // 依次判断后续的元素是否比min小 min = score[x]; // 如果小,则修改min内容 }

交换数组中的位置,正序改倒序排列

for(int k=0,i=nums.length-1;k<i;i--,k++){
            int temp=nums[i];
            nums[i]=nums[k];
            nums[k]=temp;
        }

知识点记忆

  • 知识点记忆:break在哪个循环体内,作用就是跳出当前的循环体。
  • 知识点记忆:想要返回数组,定义的时候别忘加[ ]。
  • 知识点记忆:想要随机生成1-20的数字,r.nextint(20)+1。
  • 知识点记忆:在一次循环中可能你无法确定想要的值,那么你可以定义一个flag,就可以实现循环完所有情况后,在确定要不要使用该值,此时只需要if(flag)即可。

双色球系统

  • 知识点一:随机生成不重复的一组数据,巧用flag。
  • 知识点二:数组之间的比对,使用的是(Arrays.equals(lucknums,userinput)
/*双色球系统开发main函数内容*/
        int[] luckNums = crateNum();
        int count = 1;
        for (int luckNum : luckNums) {
            System.out.print("第" + count + "位中奖号码为:" + luckNum + "\n");
            count++;
        }
        //获得用户购买的数字
        int[] userNums = userInputNumbers();
        System.out.print("您最终的号码为:");
        for (int userNum : userNums) {
            System.out.print(userNum + "\t");
        }
        System.out.println("\n");
    //   比对数字,判断是否中奖
        judge(luckNums,userNums);
    }
/*双色球的开发*/
    public static int[] crateNum() {
        int[] nums1 = new int[7];
        Random ran1 = new Random();
        for (int i = 0; i < nums1.length; i++) {
            //    生成1-33之间的随机数,且不能重复10 20 30
            while (true) {
                int nums2 = ran1.nextInt(33) + 1;
                boolean flag = true;
                for (int k = 0; k < i; k++) {
                    if (nums2 == nums1[k]) {
                        flag = false;/*之所以这里使用flag是因为你需要把整个数组遍历一遍看有没有才能添加,而不是遍历一个发现没有就else添加*/
                        break;/*这里是跳出for的作用,跳出后while仍然执行,直到随机出不重复的数字出来结束*/
                    }
                }
                if (flag) {
                    nums1[i] = nums2;
                    break;/*这里是跳出while的作用*/
                }
            }
        }
        return nums1;
    }

    //用户输入7个号码系统
    public static int[] userInputNumbers() {
        int[] InputeNumbers = new int[7];
        Scanner s1 = new Scanner(System.in);
        for (int k = 0; k < InputeNumbers.length; k++) {
            System.out.println("请您输入一个数字(1-33,不得重复!):");
            while (true) {
                int temp = s1.nextInt();
                boolean flag = true;
                for (int j = 0; j < k; j++) {
                    if (temp == InputeNumbers[j]) {
                        flag = false;/*之所以这里使用flag是因为你需要把整个数组遍历一遍看有没有才能添加,而不是遍历一个发现没有就else添加*/
                        System.out.println("输入重复的数字了!!!,请重新输入:");
                        break;/*这里是跳出for的作用*/
                    }
                }
                if (flag) {
                    InputeNumbers[k] = temp;
                    break;/*这里是跳出while的作用*/
                }
            }
        }
        return InputeNumbers;
    }

    // 对比用户输入的数字与中奖数字
    public static void judge(int[] lucknums, int[] userinput) {
        if(Arrays.equals(lucknums,userinput)){
            System.out.println("恭喜您中奖了!!!");
        }
        else{
            System.out.println("很遗憾!");
        }
    }
举报

相关推荐

day3-分支和循环

php学习实例3

Java学习之路之week3day1

python学习Day-3

Java学习 day 1

0 条评论