while与do while
while:
while(循环条件){
语句块
}
do while
do{
语句块
}while(循环条件);
简单说就是:while语句是先进行判断,然后执行语句块。do while是先执行再判断且do while会至少执行一次。
下面以一个家庭收支系统的案例为例进行比较;
先进行while的循环:
public class Acount {
public static void main(String[] args) {
boolean flag = true;
String details = "收支\t账户金额\t\t收支金额\t\tn说明\t\n\n";
int money = 10000;
while(flag) {
System.out.println("----------------------家庭收支记账软件------------------------");
System.out.println();
System.out.println(" 1.收支明细 ");
System.out.println(" 2.登记收入 ");
System.out.println(" 3.登记支出 ");
System.out.println(" 4.退 出 ");
System.out.println();
System.out.println("请选择(1-4):");
char c = Utility.readMenuSelection();
switch(c) {
case '1'://收支明细
System.out.println("------------------ 当前收支明细 -------------------");
System.out.println(details);
System.out.println("------------------------------------------------");
break;
case '2'://登记收入
System.out.println("本次收入金额:");
int num1 = Utility.readNumber();
System.out.println("本次收入说明:");
String num1str = Utility.readString();
money += num1;
details += "收入\t"+money+"\t\t"+num1+"\t\t"+num1str+"\n";
System.out.println("----------------- 登记完成 ------------------");
break;
case '3'://登记支出
System.out.println("本次支出金额:");
int num2 = Utility.readNumber();
System.out.println("本次支出说明:");
String num2str = Utility.readString();
money -= num2;
details += "支出\t"+money+"\t\t"+num2+"\t\t"+num2str+"\n";
System.out.println("----------------- 登记完成 ------------------");
break;
case '4'://退出
System.out.println("是否确认退出(Y/N):");
char yn = Utility.readConfirmSelection();
if(yn=='Y') {
System.out.println("退出成功");
//break;跳出的是switch case
flag=false;
}else {
System.out.println("退出失败");
}
break;
}
}
}
}
do while的循环
public class Acount {
public static void main(String[] args) {
boolean flag = true;
String details = "收支\t账户金额\t\t收支金额\t\tn说明\t\n\n";
int money = 10000;
do {
System.out.println("----------------------家庭收支记账软件------------------------");
System.out.println();
System.out.println(" 1.收支明细 ");
System.out.println(" 2.登记收入 ");
System.out.println(" 3.登记支出 ");
System.out.println(" 4.退 出 ");
System.out.println();
System.out.println("请选择(1-4):");
char c = Utility.readMenuSelection();
switch(c) {
case '1'://收支明细
System.out.println("------------------ 当前收支明细 -------------------");
System.out.println(details);
System.out.println("------------------------------------------------");
break;
case '2'://登记收入
System.out.println("本次收入金额:");
int num1 = Utility.readNumber();
System.out.println("本次收入说明:");
String num1str = Utility.readString();
money += num1;
details += "收入\t"+money+"\t\t"+num1+"\t\t"+num1str+"\n";
System.out.println("----------------- 登记完成 ------------------");
break;
case '3'://登记支出
System.out.println("本次支出金额:");
int num2 = Utility.readNumber();
System.out.println("本次支出说明:");
String num2str = Utility.readString();
money -= num2;
details += "支出\t"+money+"\t\t"+num2+"\t\t"+num2str+"\n";
System.out.println("----------------- 登记完成 ------------------");
break;
case '4'://退出
System.out.println("是否确认退出(Y/N):");
char yn = Utility.readConfirmSelection();
if(yn=='Y') {
System.out.println("退出成功");
//break;跳出的是switch case
flag=false;
}else {
System.out.println("退出失败");
}
break;
}
}while(flag) ;