• Java语法基础案例


    目录

    案例一:买飞机票

    案例二:开发验证码

    案例三:评委打分

    案例四:数字加密

    案例五:数组拷贝


    快捷键使用

    //alt+回车快速由上而下生成方法

    案例一:买飞机票

    需求:

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

    方法:先使用if判断月份是旺季还是淡季,然后使用switch分支判断是头等舱还是经济舱

    代码:

    1. package com.itheima;
    2. public class Test1 {
    3. public static void main(String[] args) {
    4. double a=calculate(1000,8,"经济舱");
    5. System.out.println("优惠价是:"+a);
    6. }
    7. public static double calculate(double price, int month, String type) {
    8. if (month >= 5 && month <= 10) {
    9. switch (type) {
    10. case "头等舱":
    11. price *= 0.9;
    12. break;
    13. case "经济舱":
    14. price *= 0.85;
    15. break;
    16. }
    17. } else {
    18. switch (type) {
    19. case "头等舱":
    20. price *= 0.7;
    21. break;
    22. case "经济舱":
    23. price *= 0.65;
    24. break;
    25. }
    26. }
    27. return price;
    28. }
    29. }

    案例二:开发验证码

    需求:开发一个程序,可以生成指定位数的验证码,每位可以是数字也可以是大小写字母

    方法 :使用for循环依次生成每位随机字符,并使用一个String类的变量把每个字符连接起来,最后返回该变量即可

    ①定义-个for循环,循环5次。

    ②随机生成0|1|2的数据,依次代表当前要生成的字符是:数字、大写字母、小写字母。

    ③把0、1、2交给switch生成对应类型的随机字符。

    ④在循环外定义-个String类型的变量用来连接生成的随机字符。

    ⑤循环结束后,返回String类型的变量即是生成的随机验证码。

    代码

    1. package com.itheima;
    2. import java.util.Random;
    3. public class Test2 {
    4. public static void main(String[] args) {
    5. System.out.println(createCode(4));
    6. }
    7. public static String createCode(int n){
    8. Random r=new Random();
    9. //定义一个String类型的变量用于记住产生的每位随机字符
    10. String code = "";
    11. for (int i = 1; i <= n; i++) {
    12. int type=r.nextInt(3);//随机一个0 1 2之间的数字出来
    13. //0代表随机一个数字字符,1代表大写英文字母,2代表小写英文字母
    14. switch (type){
    15. case 0:
    16. //随机一个数字字符
    17. code += r.nextInt(10);//0~9随机一个数字字符
    18. break;
    19. case 1:
    20. //随机一个大写字符 A 65 Z 65+25
    21. char ch1= (char) (r.nextInt(26)+65);//alt+回车键,快速进行转换
    22. code += ch1;
    23. break;
    24. case 2:
    25. //随机一个小写字符
    26. char ch2= (char) (r.nextInt(26)+97);
    27. code += ch2;
    28. }
    29. }
    30. return code;
    31. }
    32. }

    案例三:评委打分

    在唱歌比赛中,可能有多名评委要给选手打分,分数是[0 - 100]之间的整数。选手最后得分为:去掉最高分、最低分后剩余分数的平均分,请编写程序能够录入多名评委的分数,并算出选手的最终得分。

    方法:定义数组,录入评委的分数存入到数组中去,接着,我们就需要遍历数组中的分数,计算出总分,并找出最高分,最低分,最后按照这些数据算出选手最终得分并返回即可

    ①定义一个动态初始化的数组,用于录入评委打分。

    ②提前定义三个变量用来记住数组中的最大值、最小值、总和。

    ③遍历数组中的每个数据,依次找出最大值、最小值、总和。

    ④遍历结束后,按照计算规则算出选手的最终得分,并返回即可。

    代码

    1. package com.itheima;
    2. import java.util.Scanner;
    3. public class Test3 {
    4. public static void main(String[] args) {
    5. System.out.println("当前选手得分是:"+getAverageScore(6));
    6. }
    7. public static double getAverageScore(int number){
    8. //1.定义一个动态初始化的数组,负责后期存入评委的打分
    9. int[] scores=new int[number];
    10. //2.遍历数组的每个位置,依次录入评委的分数
    11. Scanner sc=new Scanner(System.in);
    12. for (int i = 0; i < scores.length; i++) {
    13. System.out.println("请您录入第"+(i+1)+"个评委的分数");
    14. int score=sc.nextInt();//等待用户输入,并且把用户输入的数定义为score
    15. scores[i]=score;//将用户输入的数存入数组
    16. }
    17. int sum=0;
    18. int max=scores[0];//参照值
    19. int min=scores[0];//参照值
    20. for (int i = 0; i < scores.length; i++) {
    21. int score=scores[i];
    22. sum+=score;
    23. if(score>max){
    24. max=score;
    25. }
    26. if (score
    27. min=score;
    28. }
    29. }
    30. return 1.0*(sum-min-max)/(number-2);//乘1.0是为了保留小数,使结果更为精准
    31. }
    32. }

    方法:将四位数字密码拆分成一个一个的数字,存入数组中去,遍历数组中的每个数字,按照题目需求进行加密,拼接返回

    案例四:数字加密

    某系统的数字密码是一个四位数,如1983, 为了安全,需要加密后再传输,加密规则是:对密码中的每位数,都加5 ,再对10求余,最后将所有数字顺序反转,得到一串加密后的新数,请设计出满足本需求的加密程序!

    方法:将四位数字密码拆分成一个-一个的数字,存入到数组中去,遍历数组中的每个数字按照题目需求进行加密!最后,再把加密后的数字拼接起来返回即可!

    代码:

    1. package com.itheima;
    2. import static java.util.Collections.reverse;
    3. public class Test4 {
    4. public static void main(String[] args) {
    5. System.out.println("加密后的结果是:"+encrypt(8346));
    6. }
    7. public static String encrypt(int number){
    8. int[] numbers=split(number);//将数字拆分成一个一个的数字并存入数组
    9. for (int i = 0; i < numbers.length; i++) {
    10. numbers[i]=(numbers[i]+5)%10;
    11. }
    12. reverse(numbers);
    13. //将这些的数字拼接起来作为加密后的结果返回
    14. String data="";
    15. for (int i = 0; i < numbers.length; i++) {
    16. data+=numbers[i];//将翻转后遍历的数字存入data
    17. }
    18. return data;
    19. }
    20. public static void reverse(int[] numbers) {//反转方法
    21. for (int i = 0,j=numbers.length-1; i < j; i++,j--) {
    22. //i>>数组的第一位 j>>数组的最后一位
    23. //交换i和j位置的值
    24. //1.把后一个位置处的值交给一个临时变量先存起来
    25. int temp=numbers[j];
    26. //2.把前一个位置处的值赋值给后一个位置处
    27. numbers[j]=numbers[i];
    28. //3.把后一个位置处原来的值(由临时变量记住着)赋值给前一个位置
    29. numbers[i]=temp;
    30. }
    31. }
    32. public static int[] split(int number) {//拆分方法
    33. int[] numbers=new int[4];
    34. //alt+回车快速由上而下生成方法
    35. numbers[0]=number/1000;
    36. numbers[1]=(number/100)%10;
    37. numbers[2]=(number/10)%10;
    38. numbers[3]=number%10;
    39. return numbers;
    40. }
    41. }

    案例五:数组拷贝

    请把一个整型数组,例如存了数据: 11, 22, 33,拷贝成一个一模一样的新数组出来。

    方法:创建一个长度一样的整型数组做为新数组,并把原数组的元素对应位置赋值给新数组,最终返回新数组即可

    注意拷贝不等于赋值,赋值只是拷贝了地址,所以不能直接使用

    int[] arr3=arr;

    数组的拷贝是什么意思?

    创建出一个与原数组一模一样的数组

    正确代码:

    1. package com.itheima;
    2. public class Test5 {
    3. public static void main(String[] args) {
    4. int[] arr={11,22,33};
    5. int[] arr2=copy(arr);
    6. printArray(arr2);
    7. }
    8. public static void printArray(int[] arr){
    9. System.out.print("[");
    10. for (int i = 0; i < arr.length; i++) {
    11. System.out.print(i==arr.length-1?arr[i]:arr[i]+",");
    12. }
    13. System.out.println("]");
    14. }
    15. public static int[] copy(int[] arr){
    16. //1.创建一个长度一样的整型数组出来
    17. int[] arr2=new int[arr.length];
    18. for (int i = 0; i < arr.length; i++) {
    19. arr2[i]=arr[i];
    20. }
    21. return arr2;
    22. }
    23. }

  • 相关阅读:
    Python笔记五之正则表达式
    京东腰带怎么设置,分享详细教程
    Himall商城类型帮助类将string类型转换成Bool类型
    【毕业设计】树莓派智能捡垃圾机器人 - 机器视觉 单片机 物联网
    跨境电商的发展趋势及语言翻译的重要性
    每日五道java面试题之spring篇(二)
    testng-xslt使用详细教程
    【软件测试】理论知识基础第三章
    Nginx高级 第一部分:扩容
    Mybatis练习(按值单条件查询)
  • 原文地址:https://blog.csdn.net/m0_73770225/article/details/133757421