Java 综合案例

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 使用Java基础知识对几个案例进行编程,提升编程能力

文章目录


前言

🌏案例一:买飞机票

🌙需求:

⌛分析:

⚡代码:

⚡示例:

🌏案例二:开发验证码

🌙需求:

⌛分析:

⚡代码:

⚡示例:

🌏案例三:评委打分

🌙需求:

⌛分析:

⚡代码:

⚡示例:

🌏案例四:数字加密

🌙需求:

⌛分析:

⚡代码:

⚡示例:

🌏案例五:猜数字

🌙需求:

⚡分析:

⌛代码:

⚡示例:


前言


使用Java基础知识对几个案例进行编程,提升编程能力


涉及到的知识点


变量、数组

运算符:基本运算符、关系运算符、逻辑运算符…

程序流程控制:if、switch;for、while;死循环、循环嵌套

跳转关键字:break、continue、return。

方法

关于提升编程思维和编程能力的建议


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

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

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


🌏案例一:买飞机票

🌙需求:

机票价格按照淡季旺季、头等舱和经济舱收费、输入机票原价、月份和头等舱或经济舱。按照如下规则计算机票价格:旺季(5-10月)头等舱9折,经济舱8.5折,淡季(11月到来年4月)头等舱7折,经济舱6.5折。


⌛分析:

定义一个方法可以进行键盘录入机票原价、月份和机舱类型。

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

选择对应的折扣进行计算并返回计算的结果。

1.遇到判断值匹配的时选择什么结构实现?


使用switch分支结构实现。

2.遇到判断区间范围的时候选择什么结构实现?


使用if分支结构实现。

⚡代码:

import java.util.Scanner;
public class Demo1 {
    public static void main(String[] args){
        double original,price=0;
        int month;
        String type;
        System.out.print("请输入机票原价、月份和机舱类型:");
        Scanner read=new Scanner(System.in);
        original=read.nextDouble();
        month=read.nextInt();
        type=read.next();
        if(month>=5 && month<=10){
            switch(type){
                case "经济舱":price=0.85*original;
                break;
                case "头等舱":price=0.9*original;
                break;
                default:System.out.println("\n请输入正确的机舱类型");
            }
        } else if ((month>=1 && month<=4 )||(month>=11 && month<=12)) {
            switch(type){
                case "经济舱":price=0.65*original;
                    break;
                case "头等舱":price=0.7*original;
                    break;
                default:System.out.println("\n请输入正确的机舱类型!");
            }
        }else {
            System.out.println("请输入正确的月份!");
        }
        System.out.println("机票价格:"+price);
    }
}


⚡示例:

请输入机票原价、月份和机舱类型:1000 5 头等舱
机票价格:900.0


🌏案例二:开发验证码

🌙需求:

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


⌛分析:

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

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

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

随机验证码的核心实现逻辑是如何进行的?


①定义一个String类型的变量存储验证码字符。

②定义一个for循环,循环5次。

③随机生成0|1|2的数据,依次代表当前位置要生成数字|大写字母|小写字母。

④把0、1、2交给switch生成对应类型的随机字符,把字符交给String变量。

⑤循环结束后,返回String类型的变量即是所求的验证码结果。


⚡代码:

import java.util.Random;
public class Demo2 {
    public static void main(String[] args){
        System.out.println("生成的验证码为:"+code(5));
    }
    public static String code(int x){
        Random r=new Random();
        String code=" ";
        for(int i=1;i<6;i++){
            int type=r.nextInt(3);//随机生成数字0,1,2 。分别代表数字、大写字母、小写字母
            switch (type){
                case 0:
                    code += r.nextInt(10);//随机生成0~9之间的数字
                    break;
                case 1:
                    char c1=(char)(r.nextInt(26)+65);//随机生成26个大写字母
                    code += c1;
                    break;
                case 2:
                    char c2=(char)(r.nextInt(26)+97);//随机生成26个小写字母
                    code += c2;
            }
        }
        return code;
    }
}


⚡示例:

生成的验证码为: 34rlx


🌏案例三:评委打分

🌙需求:

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


⌛分析:

把6个评委的分数录入到程序中去 ----> 使用数组

int[] scores = new int[6];

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

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

⚡代码:

import java.util.Random;
public class Demo3 {
    public static void main(String[] args){
        int[] scores=new int[6];
        int max,min,total=0;
        Random r=new Random();
        System.out.print("六个评委打出的分数为:");
        for(int i=0;i<6;i++){
            scores[i]=r.nextInt(101);
            System.out.print(scores[i]+"\t");
            total+=scores[i];
        }
        max=min=scores[0];
        for(int i=1;i<6;i++){
            if(max<scores[i]){
                max=scores[i];
            }
            if(min>scores[i]){
                min=scores[i];
            }
        }
        System.out.println("\n去掉一个最高分:"+max);
        System.out.println("去掉一个最低分:"+min);
        float average=(total-max-min)/4;
        System.out.println("最终选手的得分为:"+average);
    }
}


⚡示例:

六个评委打出的分数为:41 84 72 24 62 87
去掉一个最高分:87
去掉一个最低分:24
最终选手的得分为:64.0


🌏案例四:数字加密

🌙需求:

某系统的数字密码,比如1983,采用加密方式进行传输,规则如下:先得到每位数,然后每位数都加上

5 , 再对10求余,最后将所有数字反转,得到一串新数。


⌛分析:

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

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

⚡代码:

import java.util.Scanner;
public class Demo4 {
    public static void main(String[] args){
        int[] s=new int[4];
        System.out.print("输入密码:");
        Scanner in=new Scanner(System.in);
        for(int i=0;i<s.length;i++){
            s[i]=in.nextInt();
        }
        for(int i=0;i<s.length;i++){
            s[i]+=5;
            s[i]%=10;
        }
        for (int i = 0,j= s.length-1; i < j; i++,j--) {
            int temp=s[j];  //用一个临时的变量进行存储
            s[j]=s[i];   //反转密码
            s[i]=temp;
        }
        String str="";
        for(int i=0;i<s.length;i++){
            str+=s[i];
        }
        System.out.println("加密后的结果:"+str);
    }
}


⚡示例:

输入密码:1 9 8 3
加密后的结果:8346


练习:请将加密后的数据解密出来


🌏案例五:猜数字

🌙需求:

在1到100之间随机指定一个数,玩家在此范围进行猜数,使用java编程完成小游戏。


⚡分析:

首先需要产生一个随机的数字,并且不能再发生变化,用Random的nextInt()方法;

获取键盘输入的数字,用Scanner的nextInt()方法;

if语句比较猜的数字与随机生成的数字

⌛代码:

import java.util.Random;
import java.util.Scanner;
public class Demo5{
    public static void main(String[] args) {
        Random r = new Random();
        int randomNum = r.nextInt(100) + 1; //[1,100];如果不+1,那就是0-99
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入你猜测的数字:");
        for(int i=0;i<10;i++) {
            int guessNum = sc.nextInt();
            if(randomNum < guessNum) {
                System.out.println("太大了!请重试");
            } else if (randomNum > guessNum) {
                System.out.println("太小了!请重试");
            } else {
                System.out.println("猜测对了");
                break;  //如果猜中,不再重试
            }
        }
        System.out.println("游戏结束");//答对或超过十次退出
    }
}


⚡示例:

请输入你猜测的数字:
48
太小了!请重试
78
太大了!请重试
67
太小了!请重试
70
太小了!请重试
73
太大了!请重试
72
猜测对了
游戏结束
目录
相关文章
|
2月前
|
jenkins Java 测试技术
如何使用 Jenkins 自动发布 Java 代码,通过一个电商公司后端服务的实际案例详细说明
本文介绍了如何使用 Jenkins 自动发布 Java 代码,通过一个电商公司后端服务的实际案例,详细说明了从 Jenkins 安装配置到自动构建、测试和部署的全流程。文中还提供了一个 Jenkinsfile 示例,并分享了实践经验,强调了版本控制、自动化测试等关键点的重要性。
81 3
|
2月前
|
存储 Java 关系型数据库
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践,包括连接创建、分配、复用和释放等操作,并通过电商应用实例展示了如何选择合适的连接池库(如HikariCP)和配置参数,实现高效、稳定的数据库连接管理。
72 2
|
2月前
|
Java 关系型数据库 数据库
面向对象设计原则在Java中的实现与案例分析
【10月更文挑战第25天】本文通过Java语言的具体实现和案例分析,详细介绍了面向对象设计的五大核心原则:单一职责原则、开闭原则、里氏替换原则、接口隔离原则和依赖倒置原则。这些原则帮助开发者构建更加灵活、可维护和可扩展的系统,不仅适用于Java,也适用于其他面向对象编程语言。
45 2
|
3月前
|
Java 数据库
案例一:去掉数据库某列中的所有英文,利用java正则表达式去做,核心:去掉字符串中的英文
这篇文章介绍了如何使用Java正则表达式从数据库某列中去除所有英文字符。
75 15
|
3月前
|
安全 Java
Java多线程通信新解:本文通过生产者-消费者模型案例,深入解析wait()、notify()、notifyAll()方法的实用技巧
【10月更文挑战第20天】Java多线程通信新解:本文通过生产者-消费者模型案例,深入解析wait()、notify()、notifyAll()方法的实用技巧,包括避免在循环外调用wait()、优先使用notifyAll()、确保线程安全及处理InterruptedException等,帮助读者更好地掌握这些方法的应用。
26 1
|
3月前
|
jenkins Java 测试技术
如何使用 Jenkins 自动发布 Java 代码,通过一个电商公司后端服务的实际案例详细说明
【10月更文挑战第8天】本文介绍了如何使用 Jenkins 自动发布 Java 代码,通过一个电商公司后端服务的实际案例,详细说明了从 Jenkins 安装配置到自动构建、测试和部署的全流程。文中还提供了一个 Jenkinsfile 示例,并分享了实践经验,强调了版本控制、自动化测试等关键点的重要性。
47 5
|
3月前
|
分布式计算 NoSQL Java
Hadoop-32 ZooKeeper 分布式锁问题 分布式锁Java实现 附带案例和实现思路代码
Hadoop-32 ZooKeeper 分布式锁问题 分布式锁Java实现 附带案例和实现思路代码
62 2
|
3月前
|
Java C#
Java的监听处理事件--小球移动案例
Java的监听处理事件--小球移动案例
22 0
|
5月前
|
监控 算法 安全
Java并发编程案例分析:死锁的检测与解决
Java并发编程案例分析:死锁的检测与解决
45 2
|
5月前
|
安全 Java API
精通 Java 后台开发:案例分析与实践
精通 Java 后台开发:案例分析与实践
66 2