本文针对如下业务流程的实现方法进行了探究。
检测用户是否已登录,未登录则退出系统
检测题库名是否有效,无效则退出系统
检测考试是否还有时间,没有时间则退出系统
答题,正常退出系统
对比了【多层嵌套分支法】、【标志变量法】和【do...while(false)循环法】,深刻体现了do...while结构在此类业务流程中的巧妙之处。
|
package xiangmu;
|
|
|
|
public class Ceshi {
|
|
public static void main(String args[]) {
|
|
// 写法1:多层嵌套分支
|
|
// 如果需要完成的检测函数很多,那么if分支的嵌套层次就会很多
|
|
String yhm = "Tom";
|
|
String tkm = "Java期末考试";
|
|
double sj = 100;
|
|
if(jiance_yonghudenglu(yhm)) {
|
|
if(jiance_tikuyouxiao(tkm)) {
|
|
if(jiance_shijian(sj)) {
|
|
dati();
|
|
}else {
|
|
System.out.println("考试时间已用完!");
|
|
}
|
|
}else {
|
|
System.out.println("题库名无效!");
|
|
}
|
|
}else {
|
|
System.out.println("用户未登录!");
|
|
}
|
|
System.out.println("退出系统!");
|
|
}
|
|
public static boolean jiance_yonghudenglu(String yonghuming) {
|
|
// 检测用户是否已登录,已登录返回true,未登录返回false
|
|
return true;
|
|
}
|
|
public static boolean jiance_tikuyouxiao(String tikuming) {
|
|
// 检测题库名是否有效,有效返回true,无效返回false
|
|
return true;
|
|
}
|
|
public static boolean jiance_shijian(double shijian) {
|
|
// 检测考试是否还有时间,有时间返回true,没有时间返回false
|
|
return true;
|
|
}
|
|
public static void dati() {
|
|
// 答题
|
|
System.out.println("答题");
|
|
}
|
|
}
|
|
package xiangmu;
|
|
|
|
public class Ceshi {
|
|
public static void main(String args[]) {
|
|
// 写法2:标志变量法
|
|
// 这样写不需要多层嵌套,但不管之前的检测函数是否通过,后续的每一个检测函数都需要执行
|
|
String yhm = "Tom";
|
|
String tkm = "Java期末考试";
|
|
double sj = 100;
|
|
int biaozhi = 0;
|
|
if(!jiance_yonghudenglu(yhm)) { // !true == false !false == true
|
|
System.out.println("用户未登录!");
|
|
biaozhi = 1;
|
|
}
|
|
if(!jiance_tikuyouxiao(tkm)) {
|
|
System.out.println("题库名无效!");
|
|
biaozhi = 1;
|
|
}
|
|
if(!jiance_shijian(sj)) {
|
|
System.out.println("考试时间已用完!");
|
|
biaozhi = 1;
|
|
}
|
|
if(biaozhi == 0) {
|
|
dati();
|
|
}
|
|
System.out.println("退出系统!");
|
|
}
|
|
public static boolean jiance_yonghudenglu(String yonghuming) {
|
|
// 检测用户是否已登录,已登录返回true,未登录返回false
|
|
return true;
|
|
}
|
|
public static boolean jiance_tikuyouxiao(String tikuming) {
|
|
// 检测题库名是否有效,有效返回true,无效返回false
|
|
return true;
|
|
}
|
|
public static boolean jiance_shijian(double shijian) {
|
|
// 检测考试是否还有时间,有时间返回true,没有时间返回false
|
|
return true;
|
|
}
|
|
public static void dati() {
|
|
// 答题
|
|
System.out.println("答题");
|
|
}
|
|
}
|
|
package xiangmu;
|
|
|
|
public class Ceshi {
|
|
public static void main(String args[]) {
|
|
// 写法3:do...while(false)循环法
|
|
// 不需要多层if嵌套,只要有一个检测函数不通过,其他检测函数直接被跳过
|
|
// 既实现了减少代码嵌套层次,又保证了执行效率
|
|
// 巧妙!!!
|
|
String yhm = "Tom";
|
|
String tkm = "Java期末考试";
|
|
double sj = 100;
|
|
do {
|
|
if(!jiance_yonghudenglu(yhm)) { // !true == false !false == true
|
|
System.out.println("用户未登录!");
|
|
break;
|
|
}
|
|
if(!jiance_tikuyouxiao(tkm)) {
|
|
System.out.println("题库名无效!");
|
|
break;
|
|
}
|
|
if(!jiance_shijian(sj)) {
|
|
System.out.println("考试时间已用完!");
|
|
break;
|
|
}
|
|
dati();
|
|
}while(false);
|
|
System.out.println("退出系统!");
|
|
}
|
|
public static boolean jiance_yonghudenglu(String yonghuming) {
|
|
// 检测用户是否已登录,已登录返回true,未登录返回false
|
|
return true;
|
|
}
|
|
public static boolean jiance_tikuyouxiao(String tikuming) {
|
|
// 检测题库名是否有效,有效返回true,无效返回false
|
|
return true;
|
|
}
|
|
public static boolean jiance_shijian(double shijian) {
|
|
// 检测考试是否还有时间,有时间返回true,没有时间返回false
|
|
return true;
|
|
}
|
|
public static void dati() {
|
|
// 答题
|
|
System.out.println("答题");
|
|
}
|
|
}
|