黑马JAVA入门学习笔记5

一、买飞机票

public class test1 {
    public static void main(String[] args) {
        //买飞机票
        double price=calculate(1000,8,"经济舱");
        System.out.println("优惠价:"+price);
    }
    public static double calculate(double price,int month,String type){
        if(month>=5&&month<=10){
            switch(type){
                case "头等舱":
                    price*=0.9;
                    break;
                case"经济舱":
                    price*=0.85;
                    break;
            }
        }
        else{
            switch(type){
                case "头等舱":
                    price*=0.7;
                    break;
                case"经济舱":
                    price*=0.65;
                    break;
            }
        }
        return price;
    }

}

区间选择用if,对应取值用switch。 

二、开发验证码 

import java.util.Random;

public class test2 {
    public static void main(String[] args) {
        //生成随机验证码
        System.out.println(creatCode(5));
    }
    public static String creatCode(int n){
        Random r=new Random();
        String code="";
        for (int i = 0; i <n; i++) {
            int type=r.nextInt(3);//0代表整数,1代表大写字母,2代表小写字母
            switch(type){
                case 0:
                    code+=r.nextInt(10);
                    break;
                case 1:             //随机一个大写字母 A65 Z 65+25
                    code+=(char)(r.nextInt(26)+65);
                    break;
                case 2:             //随机一个小写字母 a97 z 97+25
                    code+=(char)(r.nextInt(26)+97);
                    break;
            }
        }
        return code;
    }
}

三、评委打分

import java.util.Scanner;

public class test3 {
    public static void main(String[] args) {
        //评委打分
        System.out.println(getAverageScore(6));
    }
    public static double getAverageScore(int number){
        //number是评委个数,构造动态化数组,录入评委打分
        int[] scores=new int[number];
        Scanner sc=new Scanner(System.in);
        for (int i = 0; i <scores.length ; i++) {
            System.out.println("请输入第"+(i+1)+"个评委的分数");
            int score=sc.nextInt();
            scores[i]=score;
        }
        int sum=0;//总分
        int min=scores[0];
        int max=scores[0];
        //遍历一遍找到最大最小值,并计算出总分
        for (int i = 0; i <scores.length ; i++) {
            sum+=scores[i];
            if(scores[i]>max){
                max=scores[i];
            }
            if(scores[i]<min){
                min=scores[i];
            }
        }
        return 1.0*(sum-min-max)/(number-2);
    }
}

四、数字加密 

public class test4 {
    public static void main(String[] args) {
        //数字加密
        System.out.println("加密后的结果是:"+encrypt(1983)); //8346
    }
    public static String encrypt(int number){
        int[] numbers=split(number);  //这里写一个方法split来拆分数字密码,点击split按alt+回车自动生成方法的框架
        for (int i = 0; i <numbers.length; i++) {
            numbers[i]=(numbers[i]+5)%10;

        }
        reverse(numbers);  //写一个方法用来反转这个数组
        String data="";
        for (int i = 0; i <numbers.length; i++) {
            data+=numbers[i];
        }
        return data;
    }

    public static void reverse(int[] numbers) {
        for (int i = 0,j=numbers.length-1; i <j ; i++,j--) {
            int temp=numbers[j];
            numbers[j]=numbers[i];
            numbers[i]=temp;
        }

    }

    public static int[] split(int number) {
        int[] numbers=new int[4];
        numbers[0]=number/1000;
        numbers[1]=(number/100)%10;
        numbers[2]=(number/10)%10;
        numbers[3]=number%10;
        return numbers;
    }

}

五、 数组拷贝

public class test5 {
    public static void main(String[] args) {
        //数组拷贝
        int[] arr={11,22,33};
        int[] arr2=copy(arr);
        printArray(arr2);//定义个方法,打印数组,不需要返回

    }
    public static void printArray(int[] arr){
        System.out.print("[");
        for (int i = 0; i <arr.length ; i++) {
            System.out.print(i==arr.length-1?arr[i]:arr[i]+", ");

        }
        System.out.println("]");
    }
    public static int[] copy(int[] arr){
        int[] arr2=new int[arr.length];
        for (int i = 0; i <arr.length ; i++) {
            arr2[i]=arr[i];

        }
        return arr2;
    }
}

六、抢红包

 1、方法一

import java.util.Random;
import java.util.Scanner;

public class test6 {
    public static void main(String[] args) {
        //抢红包
        int[] moneys={9,666,188,520,99999};
        start(moneys);
    }
    public static void start(int[] moneys){
        Scanner sc=new Scanner(System.in);
        Random r= new Random();
        for (int i = 0; i <moneys.length ; i++) {
            System.out.println("请您输入任意内容进行抽奖:");
            sc.next();  //等待用户输入内容,按回车键才能继续执行下面语句

            while (true) {          //选中要循环的几行代码,按ctrl+alt+t选择while循环框架
                int index=r.nextInt(moneys.length);  //0-4
                if(moneys[index]!=0){
                    System.out.println("恭喜您,抽中了红包:"+moneys[index]);
                    moneys[index]=0;
                    break;
                }
            }


        }
        System.out.println("活动结束!");
    }
}

2、方法二 

之前写过打乱顺序的代码,自己练习这个方法,下面是我自己写的代码:

import java.util.Random;
import java.util.Scanner;

public class test66 {
    public static void main(String[] args) {
        //抢红包方法二,打乱顺序,依次输出即可
        int[] moneys={9,188,666,520,99999};
        getMoney(moneys);
    }
    public static void getMoney(int[] moneys){
        Random r=new Random();
        for (int i = 0; i <moneys.length ; i++) {
            int index=r.nextInt(moneys.length);
            int temp=moneys[i];
            moneys[i]=moneys[index];
            moneys[index]=temp;

        }
        for (int i=0;i<moneys.length;i++) {
            Scanner sc=new Scanner(System.in);
            System.out.println("请您输入任意内容进行抽奖:");
            sc.next();
            System.out.println("恭喜您,抽中了红包:"+moneys[i]);
        }
        System.out.println("抽奖结束!");
    }
}

七、找素数 

101-200之间的素数。

 1、方法一

  • 使用信号位。

public class test7 {
    public static void main(String[] args) {
        //找素数
        System.out.println("当前素数个数:"+search(101,200));
    }
    public static int search(int start,int end){
        int count=0;
        for (int i = start; i <=end ; i++) {
            //信号位思想
            boolean flag=true;
            for (int j = 2; j <=i/2 ; j++) {
                if(i%j==0){
                    //不是素数
                    flag=false;
                    break;
                }
            }

            if (flag) {
                System.out.println(i);
                count++;
            }

        }
        return count;
    }
}

2、方法二 

  • 使用外部循环指定标签
public class test7_1 {
    public static void main(String[] args) {
        //找素数
        System.out.println("当前素数个数:"+search(101,200));
    }
    public static int search(int start,int end){
        int count=0;
        OUT: //为外部循环指定标签
        for (int i = start; i <=end ; i++) {

            for (int j = 2; j <=i/2 ; j++) {
                if(i%j==0){
                    //不是素数
                    continue OUT; //结束外部循环的当次打印
                }
            }
                System.out.println(i);
                count++;
        }
        return count;
    }
}

3、方法三

  • 写一个判断素数的方法
public class test7_2 {
    public static void main(String[] args) {
        int count=0;
        for (int i = 101; i <=200 ; i++) {
            if(check(i)){
                System.out.println(i);
                count++;
            }
        }
        System.out.println("当前素数个数:"+count);
    }
    public static boolean check(int data){
        for (int i = 2; i <=data/2 ; i++) {
            if(data%i==0){
                return false;
            }
        }
        return true;
    }
}

八、打印99乘法表

public class test8 {
    public static void main(String[] args) {
        //打印99乘法表
        for (int i = 1; i <=9 ; i++) {
            for (int j = 1; j <=i ; j++) {
                System.out.print(j+"×"+i+"="+j*i+"\t");// \t代表一个tab

            }
            System.out.println();//换行

        }
    }
}

九、打印三角型星星 

public class test9 {
    public static void main(String[] args) {
        //输出三角星星
        int n=4;
        for (int i = 1; i <=n ; i++) {
            for (int j = 0; j <n-i ; j++) {
                System.out.print(" ");
            }
            for (int j = 1; j <=2*i-1 ; j++) {
                System.out.print(j%2==0?" ":"*");
            }
            System.out.println();
        }
    }
}

十、模拟双色球 

1、用户投注号码球的实现 

import java.util.Scanner;

public class test10 {
    public static void main(String[] args) {
        //完成双色球系统的开发
        int[] usersNumbers=userSelectNumbers();
        printArray(usersNumbers);
    }
    public static void printArray(int[] arr){
        System.out.print("[");
        for (int i = 0; i <arr.length ; i++) {
            System.out.print(i==arr.length-1?arr[i]:arr[i]+" ");
        }
        System.out.println("]");
    }
    public static int[] userSelectNumbers(){
        //用户需要选择六个红色球,一个蓝色号码球
        int[] numbers=new int[7];
        //先选择红色号码球 1-33,不能重复
        Scanner sc=new Scanner(System.in);
        for (int i = 0; i < numbers.length-1; i++) {
            while (true) {
                System.out.println("请您选择第"+(i+1)+"个红色号码球,范围在1-33之间");
                int number=sc.nextInt();
                if(number<1||number>33){
                    System.out.println("您输入的范围不是在1-33之间的整数,请确认!");
                }else{
                    //如果是在1-33之间,就要判断有没有重复,这里定义一个方法来判断
                    if(exist(numbers,number)){
                        System.out.println("您输入的号码重复了,请确认!");
                    }else{
                        numbers[i]=number;
                        break;
                    }
                }
            }

        }
        while (true) {
            System.out.println("请您选择蓝色号码球,范围在1-16");
            int number1=sc.nextInt();
            if(number1<1||number1>16){
                System.out.println("您输入的范围不是在1-16之间,请确认!");
            }else{
                numbers[6]=number1;
                break;
            }
        }
        return numbers;
    }

    private static boolean exist(int[] numbers, int number) {
        for (int i = 0; i <numbers.length ; i++) {
            if(numbers[i]==number){
                return true;
            }
        }
        return false;
    }
}

2、随机生成一组中奖号码 

import java.util.Random;
import java.util.Scanner;

public class test10 {
    public static void main(String[] args) {
        //完成双色球系统的开发
//        int[] usersNumbers=userSelectNumbers();
//        printArray(usersNumbers);
        int[] LuckNumbers=creatLuckNumber();
        printArray(LuckNumbers);
    }
    public static void printArray(int[] arr){
        System.out.print("[");
        for (int i = 0; i <arr.length ; i++) {
            System.out.print(i==arr.length-1?arr[i]:arr[i]+" ");
        }
        System.out.println("]");
    }
    public static int[] userSelectNumbers(){
        //用户需要选择六个红色球,一个蓝色号码球
        int[] numbers=new int[7];
        //先选择红色号码球 1-33,不能重复
        Scanner sc=new Scanner(System.in);
        for (int i = 0; i < numbers.length-1; i++) {
            while (true) {
                System.out.println("请您选择第"+(i+1)+"个红色号码球,范围在1-33之间");
                int number=sc.nextInt();
                if(number<1||number>33){
                    System.out.println("您输入的范围不是在1-33之间的整数,请确认!");
                }else{
                    //如果是在1-33之间,就要判断有没有重复,这里定义一个方法来判断
                    if(exist(numbers,number)){
                        System.out.println("您输入的号码重复了,请确认!");
                    }else{
                        numbers[i]=number;
                        break;
                    }
                }
            }

        }
        while (true) {
            System.out.println("请您选择蓝色号码球,范围在1-16");
            int number1=sc.nextInt();
            if(number1<1||number1>16){
                System.out.println("您输入的范围不是在1-16之间,请确认!");
            }else{
                numbers[6]=number1;
                break;
            }
        }
        return numbers;
    }

    private static boolean exist(int[] numbers, int number) {
        for (int i = 0; i <numbers.length ; i++) {
            if(numbers[i]==number){
                return true;
            }
        }
        return false;
    }
    public static int[] creatLuckNumber(){
        int[] numbers=new int[7];
        Random r=new Random();
        for (int i = 0; i < numbers.length-1; i++) {
            while (true) {
                int number=r.nextInt(33)+1;
                if(!exist(numbers,number)){
                    numbers[i]=number;
                    break;
                }
            }
        }
        numbers[6]=r.nextInt(16)+1;
        return numbers;

    }
}

 3、判断用户的中奖情况

import java.util.Random;
import java.util.Scanner;

public class test10 {
    public static void main(String[] args) {
        //完成双色球系统的开发
        int[] usersNumbers=userSelectNumbers();
        System.out.println("您投注号码:");
        printArray(usersNumbers);

        int[] LuckNumbers=creatLuckNumber();
        System.out.println("中奖号码:");
        printArray(LuckNumbers);
        judge(usersNumbers,LuckNumbers);
    }
    public static void printArray(int[] arr){
        System.out.print("[");
        for (int i = 0; i <arr.length ; i++) {
            System.out.print(i==arr.length-1?arr[i]:arr[i]+" ");
        }
        System.out.println("]");
    }
    public static int[] userSelectNumbers(){
        //用户需要选择六个红色球,一个蓝色号码球
        int[] numbers=new int[7];
        //先选择红色号码球 1-33,不能重复
        Scanner sc=new Scanner(System.in);
        for (int i = 0; i < numbers.length-1; i++) {
            while (true) {
                System.out.println("请您选择第"+(i+1)+"个红色号码球,范围在1-33之间");
                int number=sc.nextInt();
                if(number<1||number>33){
                    System.out.println("您输入的范围不是在1-33之间的整数,请确认!");
                }else{
                    //如果是在1-33之间,就要判断有没有重复,这里定义一个方法来判断
                    if(exist(numbers,number)){
                        System.out.println("您输入的号码重复了,请确认!");
                    }else{
                        numbers[i]=number;
                        break;
                    }
                }
            }

        }
        while (true) {
            System.out.println("请您选择蓝色号码球,范围在1-16");
            int number1=sc.nextInt();
            if(number1<1||number1>16){
                System.out.println("您输入的范围不是在1-16之间,请确认!");
            }else{
                numbers[6]=number1;
                break;
            }
        }
        return numbers;
    }

    private static boolean exist(int[] numbers, int number) {
        for (int i = 0; i <numbers.length ; i++) {
            if(numbers[i]==number){
                return true;
            }
        }
        return false;
    }
    public static int[] creatLuckNumber(){
        int[] numbers=new int[7];
        Random r=new Random();
        for (int i = 0; i < numbers.length-1; i++) {
            while (true) {
                int number=r.nextInt(33)+1;
                if(!exist(numbers,number)){
                    numbers[i]=number;
                    break;
                }
            }
        }
        numbers[6]=r.nextInt(16)+1;
        return numbers;

    }
    public static void judge(int[] userNumbers,int[] luckNumbers){
        int redcount=0;
        int bluecount=0;//中奖个数
        //先判断用户前六个红色球的中奖情况,遍历中奖号码的前六位,判断用户的号码有没有中奖
        for (int i = 0; i < userNumbers.length-1; i++) {
            for (int j = 0; j < luckNumbers.length-1; j++) {
                if(userNumbers[i]==luckNumbers[j]){
                    redcount++;
                    break;
                }
            }
        }
        bluecount=userNumbers[6]==luckNumbers[6]?1:0;
        if(redcount==6&&bluecount==1){
            System.out.println("恭喜您,中奖1000万,可以开始享受人生~~");
        }else if(redcount==6&&bluecount==0){
            System.out.println("恭喜您,中奖500万,可以稍微开始享受人生~~");
        }else if(redcount==5&&bluecount==1){
            System.out.println("恭喜您,中奖3000元,可以出去吃顿小龙虾~~");
        }else if(redcount==5&&bluecount==0||redcount==4&&bluecount==1){
            System.out.println("恭喜您,中了小奖:200元~~");
        }else if(redcount==4&&bluecount==0||redcount==3&&bluecount==1){
            System.out.println("中了10元~");
        }else if(redcount<3&&bluecount==1){
            System.out.println("中了5元~");
        }else{
            System.out.println("感谢您对福利事业做出的贡献~~~");
        }
    }
}

  • 10
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值