1、判断某一年是否为闰年
1.1 实例说明
为了弥补因人为历法规定造成的年度天数与地球实际公转周期的时间差,设立了366天的闰年,闰年的二月份有29天。本实例通过程序计算用户输入的年份是否为闰年,程序运行效果如图1所示。
图1 实例运行结果
1.2 关键技术
本实例计算闰年的关键技术是其公式。满足两种条件的整数可以称为闰年,第一、能被4整除但不能被100整除,第二、能被400整除。
该公式用Java语法实现的格式如下:
year % 4 == 0 && year % 100 != 0 || year % 400 == 0
1.3 实现过程
创建LeapYear类,在该类的主方法中接收用户输入的一个整数年份,然后通过闰年计算公式,判断这个年份是否为闰年。并在控制台输出判断结果。关键代码如下:
import java.util.Scanner;
public class LeapYear {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("请输入一个年份:");
long year = scan.nextLong();// 接收用户输入
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) { // 是闰年
System.out.print(year + "是闰年!");
} else { // 不是闰年
System.out.print(year + "不是闰年!");
}
}
}
1.4 秘笈心法
简单的if-else语句:
三元运算符(?:)是if……else……语法的一个简洁写法,可以根据需求来决定使用哪种。前者常用于赋值判断,后者常用于业务流程。
2、验证登录信息的合法性
2.1 实例说明
大多系统登录模块都会接收用户通过键盘输入的登录信息,这写登录信息将会被登录模块验证,如果使用的是指定的用户名与密码,则允许程序登录。否则将用户拒之门外。本实例通过if…else进行多条件判断实现了登录信息验证。程序运行结果如图1所示。
图1 输入合法登录信息的效果
2.2 实现过程
创建CheckLogin类,在该类的主方法中接收用户输入的登录用户名与登录密码,然后通过if条件语句分别判断用户名与密码,并输出登录验证结果。关键代码如下:
import java.util.Scanner;
public class CheckLogin {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);// 创建扫描器
System.out.println("请输入登录用户名:");
String username = scan.nextLine();// 接收用户输入登录名
System.out.println("请输入登录密码:");
String password = scan.nextLine();// 接收用户输入登录密码
if (!username.equals("mr")) {// 判断用户名合法性
System.out.println("用户名非法。");
} else if (!password.equals("mrsoft")) {// 判断密码合法性
System.out.println("登录密码错误。");
} else {// 通过以上两个条件判断则默认通过登录验证
System.out.println("恭喜您,登录信息通过验证。");
}
}
}
2.3 秘笈心法
判断字符串是否相同:
字符串属于对象而非基本数据类型,不能够使用“==”来判断两个字符串是否相当,所以它需要通过equals()方法来判断两个字符串内容是否相同,正如本实例对用户名和密码的判断那样。如果使用“==”判断的将是两个字符串对象的内存地址,而非字符串内容。
3、用Switch语句根据消费金额计算折扣
3.1 实例说明
编写程序,应用Switch语句计算累计消费金额达到一定数额时,享受不同的折扣价格。程序运行结果如图1所示。
图1 实例运行结果
3.2 实现过程
创建ProductPrice类,在该类的主方法中实现本实例的业务代码,该方法首先假设一个用户消费总额的变量money,并初始化一个折扣变量rebate,然后经过运算来获得用户等级,对不同的等级给予不同的折扣优惠。程序关键代码如下:
public class ProductPrice {
public static void main(String[] args) {
float money = 1206; // 金额
float rebate = 0f; // 折扣
if (money > 200) {
int grade = (int) money / 200; // 等级
switch (grade) { // 根据等级计算折扣比例
case 1:
rebate = 0.95f;
break;
case 2:
rebate = 0.90f;
break;
case 3:
rebate = 0.85f;
break;
case 4:
rebate = 0.83f;
break;
case 5:
rebate = 0.80f;
break;
case 6:
rebate = 0.78f;
break;
case 7:
rebate = 0.75f;
break;
case 8:
rebate = 0.73f;
break;
case 9:
rebate = 0.70f;
break;
case 10:
rebate = 0.65f;
break;
default:
rebate = 0.60f;
}
}
System.out.println("您的累计消费金额为:" + money);// 输出消费金额
System.out.println("您将享受" + rebate + "折优惠!"); // 输出折扣比例
}
}
3.3 秘笈心法
不要忽略负数:
在程序开发中经常使用的都是正数,负数因为使用的少,常常被忽略,例如“N%2==1”本来是用来计算数字N是否为奇数的,但是开发者没有考虑到负数的情况,从而导致这个算法的失败,因为任何负数应用这个算法都会等于-1。
4、判断用户输入月份的季节
4.1 实例说明
本实例根据用户输入的月份来判断季节,这是一个最典型的实践Switch语法的例子,通过这个例子,可以完全掌握Switch语法的用法与技巧。程序运行效果如图1所示。
图1 程序运行结果
4.2 实现过程
import java.util.Scanner;
public class JudgeMonth {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);// 创建扫描器
// 提示用户输入月份
System.out.println("请输入一个月份,我能告诉你它属于哪个季节。");
int month = scan.nextInt();// 接收用户输入
switch (month) {// 判断月份属于哪个季节
case 12:
case 1:
case 2:
System.out.print("您输入的月份属于冬季。");
break;
case 3:
case 4:
case 5:
System.out.print("您输入的月份属于春季");
break;
case 6:
case 7:
case 8:
System.out.print("您输入的月份属于夏季");
break;
case 9:
case 10:
case 11:
System.out.print("您输入的月份属于秋季");
break;
default:
System.out.print("你那有" + month + "月份吗?");
}
}
}
4.3 秘笈心法
融合Switch的多个条件:
Switch语句的每个case关键字都用于判断一个常量并做出相应的业务处理,数量掌握Switch语句之后可以组合多个case来完成多条件的处理,就是多个常量结果执行相同的业务处理,就行本实例中的那样。