• Java专题训练——21天学习挑战赛



    活动地址:CSDN21天学习挑战赛

    涉及到的知识点:

    • 变量、数组
    • ​运算符:基本运算符、关系运算符、逻辑运算符…
    • 程序流程控制:if、switch;for、while;死循环、循环嵌套
    • 跳转关键字:break、continue、return。
    • 方法

     练习建议:

    编程思维和编程能力不是一朝一夕形成的,需要时间的沉淀和大量练习。

    具体措施:勤于练习代码,勤于思考,孰能生巧。

    前期:先模仿,后期:再创新。

    不积跬步,无以至千里;不积小流,无以成江海。

    目录

     ➢ 案例一:买飞机票

    ➢ 案例二:找素数

    ➢ 案例三:开发验证码

    ➢ 案例四:数组元素的复制

    ➢ 案例五:评委打分

    ➢ 案例六:数字加密

    ➢ 案例七:模拟双色球[拓展]


     

     ➢ 案例一:买飞机票

    需求:

    ⚫ 机票价格按照淡季旺季、头等舱和经济舱收费、输入机票原价、月份和头等舱或经济舱。

    ⚫ 按照如下规则计算机票价格:旺季(5-10月)头等舱9折,经济舱8.5折,淡季(11月到来年4月)头等舱7 折,经济舱6.5折。

    分析:

    ⚫ 键盘录入机票原价、月份和机舱类型。

    ⚫ 使用if判断月份是是旺季还是淡季,使用switch分支判断是头等舱还是经济舱。

    ⚫ 选择对应的折扣进行计算结果

    1. import java.util.Scanner;
    2. public class chapter01 {
    3. public static void main(String[] args) {
    4. double PrimeCost;
    5. int Month ;
    6. String Type;
    7. Scanner scanner=new Scanner(System.in);
    8. System.out.println("请输入原价:");
    9. PrimeCost=scanner.nextDouble();
    10. System.out.println("请输入月份:");
    11. Month=scanner.nextInt();
    12. System.out.println("请输入机舱类型:");
    13. Type=scanner.next();
    14. if(Month>=5&&Month<=10){//旺季
    15. switch (Type){
    16. case "头等舱":PrimeCost*=0.9;
    17. break;
    18. case "经济舱":PrimeCost*=0.85;
    19. break;
    20. }
    21. }else {//淡季
    22. switch (Type){
    23. case "头等舱":PrimeCost*=0.7;
    24. break;
    25. case "经济舱":PrimeCost*=0.65;
    26. break;
    27. }
    28. }
    29. System.out.println("最终的价格为"+PrimeCost);
    30. }
    31. }

    ➢ 案例二:找素数

    需求:

    ⚫ 判断101到200之间有多少素数,并将它们输出

    分析 :

    ⚫ 101-200之间的数据可以采用循环依次拿到; 每拿到一个数,判断该数是否是素数。

    ⚫ 判断规则是:从2开始遍历到该数的一半的数据,看是否有数据可以整除它,有则不是素数,没有则是素数

    1. public class chapter02 {
    2. public static boolean Pd(int num){
    3. if(num==1||num==2)return true;//1和2是素数
    4. for (int i=2;i2;i++){//从2开始遍历到该数的一半的数据,看是否有数据可以整除它,有则不是素数,没有则是素数。
    5. if(num%i==0)return false;
    6. }
    7. return true;
    8. }
    9. public static void main(String[] args) {
    10. int index=101;
    11. int sum=0;
    12. for (int i=index;i<=200;i++){
    13. if(Pd(i)){
    14. System.out.println(i);
    15. sum++;
    16. }
    17. }
    18. System.out.println("一共"+sum+"个素数");
    19. }
    20. }

    ➢ 案例三:开发验证码

    需求:

    ⚫ 定义方法实现随机产生一个5位的验证码,每位可能是数字、大写字母、小写字母。

    分析:

    ⚫定义一个方法,生成验证码返回:方法参数是位数、方法的返回值类型是String。

    ⚫ 在方法内部使用for循环生成指定位数的随机字符,并连接起来。

    ⚫把连接好的随机字符作为一组验证码进行返回

    1. import java.util.Random;
    2. public class chapter03 {
    3. public static String QueRen(int count){
    4. String str="";
    5. char yan[]=new char[count];
    6. for (int i=0;i
    7. char c;
    8. Random random=new Random();
    9. int type=random.nextInt(3);
    10. if (type==1){
    11. int num=random.nextInt(9);
    12. c=String.valueOf(num).charAt(0);
    13. }else if(type==2){
    14. int num=random.nextInt(24);
    15. c= (char) ('A'+num);
    16. }else {
    17. int num=random.nextInt(24);
    18. c= (char) ('a'+num);
    19. }
    20. yan[i]=c;
    21. }
    22. str=new String(yan);
    23. return str;
    24. }
    25. public static void main(String[] args) {
    26. System.out.println("验证码为:"+QueRen(5));
    27. }
    28. }

    ➢ 案例四:数组元素的复制

     需求:

    ⚫ 把一个数组中的元素复制到另一个新数组中去。

    分析:

    ⚫ 需要动态初始化一个数组,长度与原数组一样。

    ⚫ 遍历原数组的每个元素,依次赋值给新数组。

    ⚫ 输出两个数组的内容

    1. public class chapter04 {
    2. public static void main(String[] args) {
    3. int a[]={1,3,2,4,5,6};
    4. int length=a.length;
    5. int b[]=new int[length];
    6. for (int i=0;i
    7. b[i]=a[i];
    8. }
    9. System.out.println("数组a的内容:");
    10. for (int i=0;i
    11. System.out.print(a[i]);
    12. }
    13. System.out.println();
    14. System.out.println("数组b的内容:");
    15. for (int i=0;i
    16. System.out.print(b[i]);
    17. }
    18. }
    19. }

    ➢ 案例五:评委打分

    需求 :

    ⚫ 在唱歌比赛中,有6名评委给选手打分,分数范围是[0 - 100]之间的整数。选手的最后得分为:去掉最 高分、最低分后的4个评委的平均分,请完成上述过程并计算出选手的得分。

    分析:

    ⚫ 把6个评委的分数录入到程序中去 

    ⚫ 遍历数组中每个数据,进行累加求和,并找出最高分、最低分。

    ⚫ 按照分数的计算规则算出平均分。

    1. import java.util.Scanner;
    2. public class chapter05 {
    3. public static void main(String[] args) {
    4. Scanner scanner=new Scanner(System.in);
    5. int[] cheng=new int[6];
    6. for (int i=0;i<6;i++) cheng[i]=scanner.nextInt();
    7. int max=0;
    8. int min=0;
    9. for (int i=0;i<6;i++){//找到最高分和最低分的下标
    10. if(cheng[max]max=i;
    11. if(cheng[min]>cheng[i])min=i;
    12. }
    13. int sum=0;
    14. for (int i=0;i<6;i++){
    15. sum+=cheng[i];
    16. }
    17. sum-=cheng[max];
    18. sum-=cheng[min];
    19. System.out.println("成绩为:"+sum/4);
    20. }
    21. }

    ➢ 案例六:数字加密

    需求:

    ⚫ 某系统的数字密码,比如1983,采用加密方式进行传输,规则如下:先得到每位数,然后每位数都加上 5 , 再对10求余,最后将所有数字反转,得到一串新数。

    分析 :

    ⚫ 将每位数据存入到数组中去,遍历数组每位数据按照规则进行更改,把更改后的数据从新存入到数组中。

    ⚫ 将数组的前后元素进行交换,数组中的最终元素就是加密后的结果。

    1. import java.util.Scanner;
    2. public class chapter06 {
    3. public static void main(String[] args) {
    4. Scanner scanner=new Scanner(System.in);
    5. System.out.println("请输入需要加密的数:");
    6. int num=scanner.nextInt();
    7. String str=String.valueOf(num);
    8. char []c=str.toCharArray();
    9. int []n=new int[c.length];
    10. for (int i=0;i
    11. n[i]=c[i]-'0';
    12. n[i]+=5;
    13. n[i]%=10;
    14. }
    15. int []r=new int[n.length];
    16. for (int i=0;i
    17. r[i]=n[r.length-1-i];
    18. }
    19. System.out.println("加密后的数字:");
    20. for (int i=0;i
    21. System.out.print(r[i]);
    22. }
    23. }
    24. }

    ➢ 案例七:模拟双色球[拓展]

    需求:

    ⚫ 一个大V直播抽奖,奖品是现金红包,分别有{2, 588 , 888, 1000, 10000}五个奖金。请使用代码模拟抽奖, 打印出每个奖项,奖项的出现顺序要随机且不重复。打印效果如下:(随机顺序,不一定是下面的顺序) 888元的奖金被抽出 588元的奖金被抽出 10000元的奖金被抽出 1000元的奖金被抽出 2元的奖金被抽出

    分析 :

    ⚫ 定义一个集合用于存储这些奖金金额。

    ⚫ 每次抽奖都随机一个索引,取出索引对应的奖金金额。

    1. import java.util.ArrayList;
    2. import java.util.List;
    3. import java.util.Random;
    4. public class chapter07 {
    5. public static void main(String[] args) {
    6. Random random=new Random();
    7. Listlist=new ArrayList<>();
    8. list.add(22);
    9. list.add(588);
    10. list.add(888);
    11. list.add(1000);
    12. list.add(10000);
    13. for (int i=0;i<5;i++){
    14. int index=random.nextInt(list.size());
    15. System.out.println("第"+(i+1)+"抽到的是"+list.get(index));
    16. list.remove(index);
    17. }
    18. }
    19. }

  • 相关阅读:
    CART决策树的上机实现
    react-router-dom6 路由懒加载与组件懒加载
    codeforces 1239D-Catowice City(tarjan缩点)
    汇编语言中断编程步骤
    算法训练.
    Consul安装
    接口自动化测试用例如何设计,一文搞定!
    Net DB Web多级缓存的实现
    前端面试宝典
    决策式AI与生成式AI
  • 原文地址:https://blog.csdn.net/weixin_52473454/article/details/126200493