CH5-Java API

【案例5-1】 模拟订单号生成

【案例介绍】

1.任务描述

​ 在超市购物时,小票上都会有一个订单号,而且每个订单号都是唯一的。本例要求编写一个程序,模拟订单系统中订单号的生成。在生成订单号时,使用年月日和毫秒值组合生成唯一订单号。

​ 例如,给定一个包括年月日以及毫秒值的数组arr={2020,0504,1101},将其拼接成字符串s:[202005041101],作为一个订单号。

2.运行结果

运行结果如图5-1所示

手机屏幕截图  描述已自动生成

图5-1 模拟订单号生成运行结果图

【案例任务】

  • 学会分析“模拟订单号生成”任务的实现思路。

  • 根据思路独立完成“模拟订单号生成”任务的源代码编写、编译及运行。

  • 掌握String类中常用方法的使用。

  • 掌握之前学习的for循环、方法调用等知识。

【案例思路】

​ (1)分析任务描述可知,做此任务需要先定义一个数组,数组中包括年月日以及毫秒值。

​ (2)要实现数组转成一个字符串,首先定义一个方法实现数组拼接成字符串。参数类型为数组,返回值类型为String,可先使用String定义一个空串,然后使用字符串的操作方法在开始最后加上“[]”字符。之后在加“[]”字符中间循环遍历数组用开始定义的字符串接收。自此,我们拼接的方法完成。在方法中将数组遍历,然后把每一个得到的字符拼接成一个字符串并且返回。

​ (3) 在主函数入口调用刚才的方法。并定义一个字符串变量接收结果

​ (4) 输出结果,观察控制台的效果。

【案例实现】

模拟订单号生成系统的实现代码,如文件5-1所示。

文件5-1 example1.java

package com.itheima;
public class example1 {
	public static void main(String[] args) {
		// 订单的年份月份毫秒值,定义一个数组即可
		int[] arr = {2019,0504,1101};
		//调用方法,用一个变量接受结果
		String s = arrayToString(arr);
		//输出结果
		System.out.println("s:" + s);
	}
	// 定义一个方法实现数组拼接成字符串。参数类型为数组 返回值类型为String 
	public static String arrayToString(int[] arr) {
	String s = "";
	s += "[";
	for (int i = 0; i < arr.length; i++) {
		if(i == arr.length-1) {
			s+=arr[i];
		}else {
			s+= arr[i];
		}
	} 
	s += "]";
	//在方法中将数组遍历,然后把每一个得到的字符拼接成一个字符串并且返回
	return s;
	}
}

​ 在文件5-1中,第6行定义了一个数组arr,数组中有年月日以及毫秒值。第7行代码调用了arrayToString()方法,该方法封装将数组遍历拼接成字符串并返回的核心功能。第13行用String的初始化代码定义了一个空串,用于接收拼接成的字符串并且返回拼接成的字符串。

​ 第15~22行代码用于遍历数组arr,每循环一次将数组中元素赋值给空串s,for循环中定义了一个i变量,用于记录循环的次数。当i的值不小于数组元素长度是循环结束。数组也全部遍历完并全部赋值给空串s。第24行用于返回拼接后的字符串。

【案例5-2】 模拟默认密码自动生成

【案例介绍】

1.任务描述

​ 本例要求编写一个程序,模拟默认密码的自动生成策略,手动输入用户名,根据用户名自动生成默认密码。在生成密码时,将用户名反转即为默认的密码。

2.运行结果

运行结果如图5-2所示。

手机屏幕截图  描述已自动生成

图5-2 模拟密码自动生成运行结果图

【案例任务】

  • 学会分析“模拟默认密码的生成”任务的实现思路。

  • 根据思路独立完成“模拟默认密码的生成”任务的源代码编写、编译及运行。

  • 掌握String类及Scanner类中常用方法的使用。

  • 掌握之前学习的for循环、方法调用等知识。

【案例思路】

​ (1) 分析任务描述可知,做此任务首先需要用Scanner类相关方法实现键盘手动输入一个字符串代表用户名。

​ (2) 要实现默认密码自动生成,根据任务描述可知默认密码就是手动输入用户名的反转及字符串的反转。因此需要将字符串用循环倒着遍历,用charAt()方法接收遍历的字符并赋值给空串。

​ (3) 在主函数入口调用刚才的方法。并定义一个字符串变量接收结果

​ (4) 输出结果,观察控制台的效果。

【案例实现】

模拟默认密码生成策略的实现代码,如文件5-2所示。

文件5-2 example2.java

package com.itheima;
import java.util.Scanner;
public class example2 {
	public static void main(String[] args) {
		//键盘输入一个字符串,用Scanner实现
		Scanner sc = new Scanner(System.in);
		System.out.println("请您输入用户名:");
		String line = sc.nextLine();
		//调用方法,用一个变量接收
		String reverse = reverse(line);
		//输出结果
		System.out.println("恭喜"+line+"用户注册成功,您的初始密码
             为:"+reverse);
	} 
	//定义一个方法实现字符串反转
	public static String reverse(String s) {
		String ss = "";
		//在方法中将字符串倒着遍历,然后把每一个得到的字符拼接成一个字符串并且返for (int i = s.length()-1; i >=0; i--) {
			ss+=s.charAt(i);
		}
		return ss;
	}
} 

​ 在文件5-2中, 第6~8行用Scanner实现了一个从键盘输入字符串,第10行代码调用了reverse()方法,该方法实现了循环遍历字符串中的字符。并且是倒叙遍历的。然后用charAt()方法将单个字符依次返回。最后将倒过来的字符串返回。第12行代码用System类实现将结果输出到打印控制台。

【案例5-3】 模拟用户登录

【案例介绍】

1.任务描述

​ 在使用一些APP时,通常都需要填写用户名和密码。用户名和密码输入都正确才会登录成功,否则会提示用户名或密码错误。

本例要求编写一个程序,模拟用户登录。程序要求如下:

​ (1) 用户名和密码正确,提示登录成功。

​ (2) 用户名或密码不正确,提示“用户名或密码错误”。

​ (3) 总共有3次登录机会,在3次内(包含三次)输入正确的用户名和密码后给出登录成功的相应提示。超过3次用户名或密码输入有误,则提示登录失败,无法再继续登录。。

​ 在登录时,需要比较用户输入的用户名密码与已知的用户名密码是否相同,本案例可以使用Scanner类以及String类的相关方法实现比较操作。

2.运行结果

登录成功的运行结果如图5-3所示

手机屏幕截图  描述已自动生成

登录失败的运行结果如图5-4所示

手机屏幕截图  描述已自动生成

【案例任务】

  • 学会分析“模拟用户登录”任务的实现思路。

  • 根据思路独立完成“模拟用户登录”任务的源代码编写、编译及运行。

  • 掌握String类及Scanner类中常用方法的使用。

  • 掌握之前学习的if判断知识。

【案例思路】

​ (1) 分析任务描述可知,已知用户名密码,定义两个字符串表示即可。

​ (2) 键盘录入要登录的用户名密码。用Scanner实现。

​ (3) 拿键盘录入的用户名密码和已知的用户名密码进行比较,给出相应的提示,字符串内容比较用equles实现。

​ (4) 循环实现多次机会。这里次数明确,用for循环实现。并在登录成功的时候。用break结束循环。

【案例实现】

模拟用户登录的实现代码,如文件5-3所示。

文件5-3 example3.java

package com.itheima;
import java.util.Scanner;
public class example3 {
    public static void main(String[] args) {
        //已知用户名密码,定义两个字符串表示即可。
        String username = "itheima";
        String password = "czbk";
        for (int i = 0; i < 3; i++) {
            // 键盘录入要登录的用户名密码。用Scanner实现
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入用户名:");
            String uname = sc.nextLine();
            System.out.println("请输入用户密码:");
            String pwd = sc.nextLine();
            //拿键盘录入的用户名密码和已知的用户名密码进行比较,给出相应的提示,字符
            串内容比较用equles实现。
                if(uname.equals(username)&&pwd.equals(password)) {
                    System.out.println("登录成功!");
                    break;
                }else {
                    if(2-i == 0) {
                        System.out.println("你的账户被锁定了,请联系管理员!!");
                    }else {
                        //2,1,0
                        System.out.println("登录失败,还有"+(2-i)+"次机会");
                    }
                }
        }
    }
}

​ 在文件5-3中,第6行和第7行分别定义字符串表示已知的用户名与用户密码,第8行代码用for循环来控制用户名与密码输入错误的次数,第10~14行代码用Scanner类中的方法实现键盘录入用户名密码。

​ 第17~26行代码表示拿键盘输入的用户名与用户密码与已知的用户名与用户密码进行比较。其中比较字符串内容用equals()方法,如果内容相同,则用break跳出for循环。如果内容不相同,则提示登录失败以及还有几次机会。

【案例5-4】 字符串转换为二进制

【案例介绍】

1.任务描述

​ 本例要求编写一个程序,从键盘录入一个字符串,将字符串转换为二进制数。在转换时,将字符串中的每个字符单独转换为一个二进制数,将所有二进制数连接起来进行输出。

​ 案例在实现时,要求使用Math类、String类以及Scanner等常见Java API的常用方法。

2.运行结果

字符串转换为二进制的运行结果如图5-1所示

img

【案例任务】

  • 学会分析“十进制转化成二进制”任务的实现思路。

  • 根据思路独立完成“十进制转化成二进制”任务的源代码编写、编译及运行。

  • 掌握String类、Math类及Scanner类中常用方法的使用。

  • 掌握之前学习的双重for循环以及数组的相关知识。

【案例思路】

​ (1) 分析任务描述可知,键盘录入要转化的字符串。用Scanner实现。

​ (2)定义一个二维数组。其中4代表每一行长度。ss.length()根据键盘录入的字符串表示有多少行。

​ (3)利用for循环遍历字符串,遍历后用String的charAt()方法获取每个字符并转化成int。char与int进行运算,char的数值要减去 48,因为ASCII码中0的值是48,1就是49。

​ (4)转化成int后再用for循环获取每一个int类型的数进行转化成二进制赋值给数组。其中Math.pow()方法是Math类中求幂的方法。

​ (5)最后用双重for循环遍历二维数组。将结果输出到控制台。

【案例实现】

模拟用户登录的实现代码,如文件5-1所示。

文件5-1 example4.java

package com.itheima;
import java.util.Scanner;
public class example4 {
    public static void main(String[] args) {
        //键盘录入要转化的字符串。用Scanner实现。
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入要转换的字符串:");
        String ss = sc.nextLine();
        //定义一个二维数组。其中4代表每一行长度。ss.length()根据键盘录入的字
        符串表示有多少行。
            int [][] arr = new int[ss.length()][4];
        //利用for循环遍历字符串,遍历后用String的charAt()方法获取每个字符并
        转化成intcharint进行运算,char的数值要减去 48,因为ASCII码中0
            的值是48,1就是49for (int i = 0; i < ss.length(); i++) {
                int charss = (int) ss.charAt(i)-48;
                for (int j = 0; j < 4; j++) {
                    //转化成int后再用for循环获取每一个int类型的数进行转化成二进
                    制赋值给数组。其中Math.pow()方法是Math类中求幂的方法。
                        arr[i][j] = (int)((charss/Math.pow(2, 3-j))%2);
                }
            }
        // 最后用双重for循环遍历二维数组。将结果输出到控制台。
        System.out.println("二进制的数是:");
        // 最后用双重for循环遍历二维数组。将结果输出到控制台。
        for (int i = 0; i < ss.length(); i++) {
            for (int j = 0; j < 4; j++) {
                System.out.print(arr[i][j]);
            }
        }
    }
}

​ 在文件5-1中,第6~8行代码表示键盘输入要转化的字符串。第11行代码定义了一个二维数组用于接收转化后的二进制数。其中4表示每一行的长度。

​ ss.length()根据键盘录入的字符串决定由多少行。第16~23行代码表示将字符串转化成二进制的数并且存入二维数组中。第27~29行代码表示遍历二维数组并输出结果到控制台。

【案例5-5】 二月天

【案例介绍】

1.任务描述

​ 二月是一个有趣的月份,平年的二月有28天,闰年的二月有29天。闰年每四年一次,在判断闰年时,可以使用年份除以4,如果能够整除,则该年是闰年。

​ 本例要求编写一个程序,从键盘输入年份,根据输入的年份计算这一年的2月有多少天。在计算二月份天数时,可以使用日期时间类的相关方法实现。

2.运行结果

二月天的运行结果如图5-1所示

img

【案例任务】

  • 学会分析“二月天”任务的实现思路。

  • 根据思路独立完成“二月天”任务的源代码编写、编译及运行。

  • 掌握在程序中使用日期类的使用。

  • 掌握Scanner类中键盘输入的使用。

【案例思路】

​ (1)分析任务描述可知,要实现此功能,首先程序要用键盘录入一个年份。可以使用Scanner类实现

​ (2)设置日历对象的年、月、日。

年:来自于键盘的输入;

月:设置为3月,因为我们需要计算2月的天数,可以通过3月1号推前一天就是2月的最后一天;

日:设置为1天。

​ (3)获取2月的天数并输出,将结果打印到控制台。

【案例实现】

二月天的实现代码,如文件5-1所示。

文件5-1 example5.java

import java.time.LocalDate;
import java.util.Scanner;
public class example5 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入需要判断的年份:");
        int year=sc.nextInt();
        //实例化出需要判断年份的3月1日
        LocalDate of =LocalDate.of(year,3,1);
        //将3月1日减去一天得到2月的最后一天日期
        LocalDate newof = of.minusDays(1);
        System.out.println(year+"年的2月有"+newof.getDayOfMonth()+"天");
    }
}

​ 在文件5-1中,第5~6行代码用于获取键盘输入的数字。第9行代码用于设置日期的对象年、月、日。第11行代码用于计算二月的天数。3月1日往前推一天,就是2月的最后一天。第12行代码用于获取2月最后的一天并且输出。

  • 7
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
目录<br>第一章 Java与Applet<br> 案例一 图形按钮<br> 案例二 模拟工具条<br> 案例三 Applet与Applet在页内的通信<br> 案例四 电子相册<br> 案例五 百页窗效果<br> 案例六 波浪彩虹文字<br> 案例七 3D立体渐层文字<br> 案例八 飞行文字<br> 案例九 聚光灯效果<br> 案例十 伸展文<br>第二章 Java与特效<br> 案例1 火焰招牌<br> 案例2 闪电中的城市<br> 案例3 激光绘画<br> 案例4 水面倒影<br> 案例5 图片放大镜<br> 案例6 浮动的气泡<br> 案例7 烟花汇演<br> 案例8 星空模拟<br> 案例9 阴影跑马灯<br> 案例10 下雪的图片<br> 案例11 动态分割线 <br> 案例12 飞流直下<br>第三章 XML与其他<br> 案例1 将HTML文件转成XML文件<br> 案例2 将XML文件转换成可浏览的HTML格式文件<br> 案例3 用JDOM解析XML文件<br> 案例4 Java编制的时钟<br> 案例5 简单日历<br> 案例6 系统内存状态监视程序<br> 案例7 简单计算器<br> 案例8 多线程断点续传<br> 案例9 笛卡尔曲线<br>第四章 Java与游戏<br> 案例1 幸运52游戏<br> 案例2 速算24扑克游戏<br> 案例3 拼图游戏<br> 案例4 贪吃蛇游戏<br> 案例5 打球游戏<br> 案例6 棒打猪头<br>第五章 Java与文件操作<br> 案例1 目录列表的显示<br> 案例2 检查与创建目录<br> 案例3 文件复制<br> 案例4 文件查看器<br> 案例5 字符串的查找与替换<br> 案例6 利用RandomAccessFile类来实现文件追加<br> 案例7 用Zip进行多文件保存<br> 案例8 用JUNIT建立测试类<br> 案例9 用Java保存位图文件<br> 案例10 获取文件属性<br>第六章 Java与安全<br> 案例1 用户登录验证的完整程序<br> 案例2 MD5的Javabean实现<br> 案例3 用公钥计算消息摘要的验证码<br> 案例4-1 Java中的数字证书的生成及维护方法<br> 案例4-2 数字证书的签发(签名)<br> 案例4-3 利用数字证书给Applet签名<br> 案例5 利用DES加密解密<br>第七章 Java与数据库<br> 案例1 在Applet中应用JDBC访问数据库<br> 案例2 通过JDBC-ODBC桥连接数据库<br> 案例3 通过tomcat数据源访问数据库<br> 案例4 JDBC连接池的实现<br> 案例5 用JavaBean实现MySQL的分页显示<br> 案例6 利用JDBC-ODBC查看查询结果<br>第八章 Java与Servlet<br> 案例1 利用Servlet打开非HTML格式的文档<br> 案例2 Servlet和JSP的通信<br> 案例3 Servlet和Servlet的通信<br> 案例4 Servlet动态生成图像<br> 案例5 用Servlet连接数据库<br> 案例6 用Servlet实现页面注册和登录<br> 案例7 运用Servlet实现BBS功能 <br> 案例8 侦听Web服务器信息<br>第九章 Java与网络<br> 案例1 显示你的IP<br> 案例2 用Socket进行客户与服务器通信<br> 案例3 利用UDP Socket技术实现IP多点传送<br> 案例4 利用Java API发送E-mail<br> 案例5 从Mail Server删除一条消息<br> 案例6 在Java程序中实现FTP的功能<br> 案例7 一个最简单的聊天程序 <br> 案例8 代理服务器的实现<br>第十章 Java综合实例<br> 案例1 用Java实现zip压缩解压缩<br> 案例2 简易图书管理系统<br> 案例3 UFO攻击游戏<br> 案例4 制作一个MP3播放器

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

绿洲213

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

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

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

打赏作者

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

抵扣说明:

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

余额充值