Day4
流程控制
分支结构
- if语句
- switch语句
循环结构
- while循环
- do while循环
if语句
书写格式
if else语句
书写格式
if···else if ···else语句
书写格式
特别的
switch语句
定义:书写格式
规则
while语句
定义:最基本的循环语句。
书写格式
do while 语句
书写格式
while与do while的区别
while | do while |
---|---|
体系内java语句至少运行0次 | 体系内java代码至少运行1次 |
循环语句三要素
一:控制变量的初始化
二:循环条件
三:循环控制变量的更新
运用流程控制语句实例
超市收银系统
import java.util.Scanner;
public class Supermarket {
public static void main(String[] args) {
Scanner in = new Scanner (System.in);
double allMoney=0;//放置用户一共花了多钱的变量;
double appleAllMoney = 0;//放置用户当前购买东西的钱数
System.out.println("欢迎来到本超市");
System.out.println("我们这里有水果与文具,请问有你需要的东西吗");
String have=in.next();
//判断商店是否有用户所需物品种类
switch(have){
case "有":
boolean bool=true;//用于进行用户购物选择循环判断的布尔
//进行用户购物选择循环
do{
System.out.println("你想要买点水果还是文具?");
String species=in.next();
//判断用户选择种类
switch(species){
case"水果":
System.out.println("我们这里的水果有苹果、香蕉、葡萄");
//进入用户输入水果名称的正确与否的判断循环
boolean bool2=true;//是否执行水果名称正确与否的表达式
while(bool2){
System.out.println("请输入你要购买的水果");
String fruit=in.next();
//根据用户所选水果的名称告知用户定价与用户已买金额
switch(fruit){
case"苹果":
double applePrice=3.5;//苹果的单价
System.out.println("苹果的价钱是"+applePrice+"元/斤");//告知用户苹果单价
System.out.println("请输入你想买的斤数");
double num=in.nextDouble();//用户输入所需苹果的斤数
double money=applePrice*num;//计算用户此次购买多少钱的苹果
appleAllMoney+=money;//记录用户购买的东西的钱数进行累加
System.out.println("您已买了"+appleAllMoney+"元的东西");//告知用户共购买了多少钱的东西
System.out.println("请问你是否还需要些别的?");
String or=in.next();//获取用户是否还需购买
// 判断用户的输入是则继续进行
switch(or){
case"是":
break;
default:
bool=false;//跳出用户选择物品的循环
}
bool2=false;
break;
case"香蕉":
double bananaPrice=4;
System.out.println("香蕉的价钱是"+bananaPrice+"元/斤");
System.out.println("请输入你想买的斤数");
double numBanana=in.nextDouble();
double moneyBanana=bananaPrice*numBanana;
appleAllMoney+=moneyBanana;
System.out.println("您已买了"+appleAllMoney+"元的东西");
System.out.println("请问你是否还需要些别的?");
String orBanana=in.next();
switch(orBanana){
case"是":
break;
default:
bool=false;
}
bool2=false;
break;
case"葡萄":
double grapesPrice=5.5;
System.out.println("葡萄的价钱是"+grapesPrice+"元/斤");
System.out.println("请输入你想买的斤数");
double numGrapes=in.nextDouble();
double moneyGrapes=grapesPrice*numGrapes;
appleAllMoney+=moneyGrapes;
System.out.println("您已买了"+appleAllMoney+"元的东西");
System.out.println("请问你是否还需要些别的?");
String orGrapes=in.next();
switch(orGrapes){
case"是":
break;
default:
bool=false;
}
bool2=false;
break;
default:
System.out.println("请输入正确的水果名");
}}
break;
case"文具":
System.out.println("我们这里的文具有铅笔、钢笔、书");
boolean bool3=true;
while(bool3){
System.out.println("请输入你要购买的文具");
String fruit=in.next();
switch(fruit){
case"铅笔":
double pencilPrice=2;
System.out.println("铅笔的价钱是"+pencilPrice+"元/根");
System.out.println("请输入你想买的根数");
double numPencil=in.nextDouble();
double moneyPencil=pencilPrice*numPencil;
appleAllMoney+=moneyPencil;
System.out.println("您已买了"+appleAllMoney+"元的东西");
System.out.println("请问你是否还需要些别的?");
String or=in.next();
switch(or){
case"是":
break;
default:
bool=false;
}
bool3=false;
break;
case"钢笔":
double penPrice=10;
System.out.println("钢笔的价钱是"+penPrice+"元/支");
System.out.println("请输入你想买的支数");
double numPen=in.nextDouble();
double moneyPen=penPrice*numPen;
appleAllMoney+=moneyPen;
System.out.println("您已买了"+appleAllMoney+"元的东西");
System.out.println("请问你是否还需要些别的?");
String orBanana=in.next();
switch(orBanana){
case"是":
break;
default:
bool=false;
}
bool3=false;
break;
case"书":
double bookPrice=25.5;
System.out.println("书的价钱是"+bookPrice+"元/本");
System.out.println("请输入你想买的本数");
double numBook=in.nextDouble();
double moneyBook=bookPrice*numBook;
appleAllMoney+=moneyBook;
System.out.println("您已买了"+appleAllMoney+"元的东西");
System.out.println("请问你是否还需要些别的?");
String orGrapes=in.next();
switch(orGrapes){
case"是":
break;
default:
bool=false;
}
bool3=false;
break;
default:
System.out.println("请输入正确的文具名");
}}
break;
default:
System.out.println("请输入正确的种类名");
}
}while(bool);
// 计算金额
allMoney=appleAllMoney;//获取用户在上述循环中购买东西的总金额
System.out.println("请付"+allMoney+"元");
double pay=in.nextDouble();//获取用户所付钱数
double diffValue=allMoney-pay;//用用户购买总金额减去用户实际支付金额计算用户是否付够
//进行用户是否应该补钱
if(diffValue>0){//当diffValue值大于0时,证明用户需要补钱
//进入用户补钱循环
boolean bool1=true;//用户补钱循环判断布尔
while(bool1){
System.out.println("你还要付"+diffValue+"元");
double payAgain=in.nextDouble();
// 获取用户补得钱
diffValue-=payAgain;//进行计算
// 判断用户钱是否补够
if(diffValue==0){
// 如果补够,则进行跳出补钱循环并输出谢谢惠顾
System.out.println("谢谢惠顾");
bool1=false;//跳出补钱循环
}else if(diffValue<0){//如果用户补钱超过所需补得钱数则进行找零并输出谢谢惠顾
System.out.println("找零"+(-diffValue)+"元");
System.out.println("谢谢惠顾");
bool1=false;
}
}
}else if(diffValue==0){//如果用户所付钱数刚好够,输出谢谢惠顾
System.out.println("谢谢惠顾");
bool=false;
}else{//用户付钱大于所付金额,进行找零
System.out.println("找零"+(-diffValue)+"元");
System.out.println("谢谢惠顾");
}
break;
default:
System.out.println("谢谢惠顾");
}
}
}