java基础语法的编程题-适用初学java的

1.案例1:买飞机票

需求:
用户购买机票时,机票原价会按照淡季、旺季,头等舱还是经济舱的情况进行相应的优惠,优惠方案如下:5-10月为旺季,头等舱9折,经济舱8.5折;11月到来年4月为淡季,头等舱7折,经济舱6.5折;请开发程序计算出用户当前机票的优惠价。

代码示例:

package com.test.基础语法编程;

/**
 * @description
 * @author: Admin
 * @create: 2024/9/11 11:23
 */
public class P62 {
    public static void main(String[] args) {
        double price=calculate(1000,11,"头等舱");
        System.out.println("优惠后的价格"+price);

    }
    public static double calculate(double price,int month,String type){
        //1.判断当前月份是淡季还是旺季
        if (month>=5&&month<=10){
            //旺季
            //2.判断仓位类型
            /*
            注意:有同学会问,那如果传的month是负数,或者type的值是其他的文字,不是经济舱或者头等舱呢?
            其实price,month,type的值会由前端的界面做出限制(例如type类型,前端可能就给出一个下拉框供你选择),所以一定会是一个正常的值;
             */
            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;
    }
}

运行结果:

2.案例2:验证码

代码示例:

package com.test.基础语法编程;

import java.util.Random;

/**
 * @description:生成随机验证码
 * 可以生成指定位数的验证码,每位可以是数字、大小写字母
 * @author: Admin
 * @create: 2024/10/15 9:24
 */
public class p63 {
    public static void main(String[] args) {
        System.out.println(getCode(5));
    }
    public static String getCode(int n){
        //定义一个String类型的变量用于记住产生的每位随机字符
        String code="";
        Random r=new Random();
        //定义一个for循环用于控制产生多少位随机字符
        for (int i=1;i<=n;i++) {
            // i = 1 2 3 4 ...n
            // 2、为每个位置生成一个随机字符:可能是数字、大小写字母。
            // 思路:随机一个0 1 2之间的数字出来,0代表随机一个数字字符,1、2代表随机大写字母,小写字母。
            int type = r.nextInt(3);//0-2
            switch (type){
                case 0:
                    //数字
                    code+=r.nextInt(10);//0-9
                    break;
                case 1:
                    //随机一个大写字符 A 65   Z 65+25  (0 - 25) + 65
                    code+= (char) (r.nextInt(26) + 65 );
                    break;
                case 2:
                    //随机一个小写字符 a 97   z 97+25  (0 - 25) + 97
                    code+=(char) (r.nextInt(26) + 97);
                    break;
            }
        }
        return code;
    }
}

运行结果(每次运行都不一样):

3.案例3: 评委打分案例

代码示例:

package com.test.基础语法编程.p64;

import java.util.Scanner;

/**
 * @description:评委打分案例
 * @author: Admin
 * @create: 2024/10/15 10:42
 */
public class Test1 {
    public static void main(String[] args) {
        System.out.println(getScroce(4));
    }
    /**
     *
     * @param number:评委人数
     * @return
     */
    public static double getScroce(int number){
        Scanner s=new Scanner(System.in);
        // 1、定义一个动态初始化的数组,负责后期存入评委的打分
        int[] numbers=new int[number];
        // 2、遍历数组的每个位置,依次录入评委的分数
        for (int i = 0; i < number; i++) {
            System.out.println("请您录入第"+ (i + 1) +"个评委的分数:");
            int score = s.nextInt();
            numbers[i]=score;
        }
        // 3、从数组中计算出总分,找出最高分,最低分。
        int max=numbers[0];// 求最大值的
        int min=numbers[0];// 求最小值的。
        int sum=0;// 求总分用的变量
        for (int num : numbers) {
            //最大值
            if(num>max){
                max=num;
            }
            //最小值
            if(num<min){
                min=num;
            }
            // 求和
            sum+=num;

        }
        // 4、计算出平均分并返回
//        return (sum-min-max)/(number-2);//这样会得到整数
        return 1.0*(sum-min-max)/(number-2);

    }
}

 运行结果:

4.案例4:数字加密 

代码示例:

package com.test.基础语法编程.p64;

/**
 * @description:数字加密
 * 需求:某系统的数字密码是一个四位数,如1983,为了安全,需要加密后再传输,加密规则是:对密码中的每位数
 * 都加5,再对10求余,最后将所有数字顺序反转,得到一串加密后的新数,请设计出满足本需求的加密程序!
 * @author: Admin
 * @create: 2024/10/15 11:02
 */
public class Test2 {
    public static void main(String[] args) {
        System.out.println("加密后的结果是:" +numberLock(1983));
        //该代码即是加密也是解密
        System.out.println(numberLock(8346));//输出1983
    }

    /**
     * 方法定义为String,是因为到时候把操作后的每位数字拼接在一起
     * @param number
     * @return
     */
    public static String numberLock(int number){
        //1、把这个密码拆分成一个一个的数字,才可以对其进行加密啊。
        int[] nums=getAllnumber(number);
        // 2、遍历这个数组中的每个数字,对其进行加密处理。
        for (int i = 0; i < nums.length; i++) {
            nums[i]=(nums[i]+5)%10;
        }
        // 3、对数组反转,把对数组进行反转的操作交给一个独立的方法来完成
        int[] reverse = reverse(nums);
        String finalNumber="";
        for (int re : reverse) {
            finalNumber+=re;

        }
        return finalNumber;
    }
    /**
     * 将nums数组的数字反转
     * @param nums
     * @return
     */
    public static int[] reverse(int[] nums){
        for(int i=0,j=nums.length-1;i<j;i++,j--){
            // 交换i和j位置处的值。
            // 3.1、把后一个位置处的值交给一个临时变量先存起来
            int temp=nums[j];
            // 3.2、把前一个位置处的值赋值给后一个位置处
            nums[j]=nums[i];
            //3.3、把后一个位置处原来的值(由临时变量记住着)赋值给前一个位置
            nums[i]=temp;
        }
        return nums;
    }

    /**
     * 该方法把传入的一个4位数的整数的每一位分隔出来,放到一个int数组里
     * @param number
     * @return
     */
    public static int[] getAllnumber(int number){
        int[] num=new int[4];
        num[0]=number/1000;
        num[1]=number/100%10;
        num[2]=number/10%10;
        num[3]=number%10;
        return num;

    }
}

运行结果:

5.案例5:数组拷贝

代码示例:

package com.test.基础语法编程.p64;

/**
 * @description:数组拷贝
 * @author: Admin
 * @create: 2024/10/15 15:58
 */
public class Test3 {
    public static void main(String[] args) {
        int[] nums={11,22,33};
        int[] numNews=copy(nums);
        printArray(numNews);

    }
    //数组打印方法
    public static void printArray(int[] nums){
        System.out.print("[");
        for (int i = 0; i < nums.length; i++) {
            System.out.print(i==nums.length-1?nums[i]:nums[i]+",");
        }
        System.out.println("]");
    }
    public static int[] copy(int[] nums){
        int[] numNews=new int[nums.length];
        for (int i = 0; i < nums.length; i++) {
            numNews[i]=nums[i];

        }
        return numNews;
    }
}

 运行结果:

6.案例6:抢红包

代码示例:

package com.test.基础语法编程;

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

/**
 * @description:抢红包
 * @author: Admin
 * @create: 2024/10/16 9:19
 */
public class p65 {
    public static void main(String[] args) {
        int[] reds={9,666,188,520,99999};
        getRed(reds);
        
    }
    public static void getRed(int[] reds){
        Random r=new Random();
        Scanner s=new Scanner(System.in);
        //1定义一个for循环,控制抽奖5次

        for (int i = 0; i < reds.length; i++) {
            //2.提示粉丝抽奖
            System.out.println("请输入任意内容:");
            s.next();//等待用户输入内容,按了回车才往下走
            //3为当前这个粉丝找一个随机的红包出来
            while (true) {
                int number = r.nextInt(reds.length);
                int money=reds[number];
                //4判断这个红包是否不为0
                if (money!=0){
                    System.out.println("恭喜你,抽中了红包"+money);
                    reds[number]=0;
                    break;
                }
            }
        }
        System.out.println("活动结束");
    }
}

 运行结果(每次运行都可能不一样):

7.案例7:找素数

代码示例一:

package com.test.基础语法编程.p66;

/**
 * @description:找素数方法一
 * @author: Admin
 * @create: 2024/10/16 10:07
 */
public class Test1_1 {
    public static void main(String[] args) {
        int i = check(101, 200);
        System.out.println("总计:"+i);

    }
    public static int check(int start,int end){
        int count=0;

        // 1、定义一个for循环找到101到200之间的每个数据
        for (int i = start; i <=end ; i++) {
            // 信号位思想
            boolean flag=true;// 假设的意思:默认认为当前i记住的数据是素数。
            // 2、判断当前i记住的这个数据是否是素数。
            for (int j = 2; j <=i/2; j++) {
                if(i%j==0){
                    flag=false;
                    break;
                }


            }

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


        }
        return count;
    }
}

代码示例二:

package com.test.基础语法编程.p66;

/**
 * @description:找素数方法二
 * @author: Admin
 * @create: 2024/10/16 10:02
 */
public class Test1 {
    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("101-200之间的素数总计"+count+"个");
    }
    public static boolean check(int data){
        for (int i = 2; i <=data/2 ; i++) {
            if(data%i==0){
                return false;//不是素数
            }


        }
        return true;//是素数
    }
}

 运行结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

布凡哦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值